在这里,我有一些由詹金斯(Jenkins)生成的JSON,我想使用GSON访问以下JSON中的值Started by user XXX
。
尽管如您所见,在causes
数组中有两个actions
。尽管有时只有一个(在这种情况下只需返回那个)。
问题:如何仅访问第一个causes
或更好地将它们都结合在一起,以便像Started by user XXX - Rebuilds build #2
一样访问它
我无法更改JSON。
编辑*我知道标题可能不是最好的标题,尽管我无法想到另一种措辞方式,所以如果有人能想到一个更好的标题,我将非常有义务。
{
"jobs" : [
{
"name" : "Test Build",
"url" : "URL",
"lastBuild" : {
"actions" : [
{
"causes" : [
{
"shortDescription" : "Started by user XXX"
}
]
},
{
"causes" : [
{
"shortDescription" : "Rebuilds build #2"
}
]
},
{
"parameters" : [
{
"name" : "ENVIRONMENT",
"value" : "PROD"
},
{
"name" : "RELEASE"
}
]
}
],
"building" : false,
"duration" : 126580,
"estimatedDuration" : 74509,
"number" : 3,
"timestamp" : 1445261252000,
"url" : "URL",
"builtOn" : "D-slave"
}
},
最佳答案
请尝试以下表达式。 0索引将给您第一个元素。
jobs[0].lastBuild.actions[0].causes
这会给你
[
[
{
"shortDescription":"Started by user XXX"
}
]
]
必要时更改表达式。
下面所有类的Java代码-基于您的json格式。
所以你需要像jenkinjobs.jobs(0).getActions(0)之类的东西。
public class Jenkinjobs
{
private Jobs[] jobs;
public Jobs[] getJobs ()
{
return jobs;
}
public void setJobs (Jobs[] jobs)
{
this.jobs = jobs;
}
@Override
public String toString()
{
return "ClassPojo [jobs = "+jobs+"]";
}
}
public class Jobs
{
private LastBuild lastBuild;
private String name;
private String url;
public LastBuild getLastBuild ()
{
return lastBuild;
}
public void setLastBuild (LastBuild lastBuild)
{
this.lastBuild = lastBuild;
}
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getUrl ()
{
return url;
}
public void setUrl (String url)
{
this.url = url;
}
@Override
public String toString()
{
return "ClassPojo [lastBuild = "+lastBuild+", name = "+name+", url = "+url+"]";
}
}
public class LastBuild
{
private String timestamp;
private String estimatedDuration;
private String duration;
private String building;
private String number;
private String builtOn;
private String url;
private Actions[] actions;
public String getTimestamp ()
{
return timestamp;
}
public void setTimestamp (String timestamp)
{
this.timestamp = timestamp;
}
public String getEstimatedDuration ()
{
return estimatedDuration;
}
public void setEstimatedDuration (String estimatedDuration)
{
this.estimatedDuration = estimatedDuration;
}
public String getDuration ()
{
return duration;
}
public void setDuration (String duration)
{
this.duration = duration;
}
public String getBuilding ()
{
return building;
}
public void setBuilding (String building)
{
this.building = building;
}
public String getNumber ()
{
return number;
}
public void setNumber (String number)
{
this.number = number;
}
public String getBuiltOn ()
{
return builtOn;
}
public void setBuiltOn (String builtOn)
{
this.builtOn = builtOn;
}
public String getUrl ()
{
return url;
}
public void setUrl (String url)
{
this.url = url;
}
public Actions[] getActions ()
{
return actions;
}
public void setActions (Actions[] actions)
{
this.actions = actions;
}
@Override
public String toString()
{
return "ClassPojo [timestamp = "+timestamp+", estimatedDuration = "+estimatedDuration+", duration = "+duration+", building = "+building+", number = "+number+", builtOn = "+builtOn+", url = "+url+", actions = "+actions+"]";
}
}
public class Parameters
{
private String name;
private String value;
public String getName ()
{
return name;
}
public void setName (String name)
{
this.name = name;
}
public String getValue ()
{
return value;
}
public void setValue (String value)
{
this.value = value;
}
@Override
public String toString()
{
return "ClassPojo [name = "+name+", value = "+value+"]";
}
}
public class Actions
{
private Causes[] causes;
public Causes[] getCauses ()
{
return causes;
}
public void setCauses (Causes[] causes)
{
this.causes = causes;
}
@Override
public String toString()
{
return "ClassPojo [causes = "+causes+"]";
}
}
public class Causes
{
private String shortDescription;
public String getShortDescription ()
{
return shortDescription;
}
public void setShortDescription (String shortDescription)
{
this.shortDescription = shortDescription;
}
@Override
public String toString()
{
return "ClassPojo [shortDescription = "+shortDescription+"]";
}
}