2015-12-16 23 views
0

在這裏我有一些由Jenkins生成的JSON,我想用GSON訪問下面的JSON中的值Started by user XXX與同名父類訪問值

雖然您可以看到actions陣列中有兩個causes。雖然有時只有一個(在這種情況下只返回那個)。

問:如何訪問第一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" 
     } 
    }, 

回答

1

請嘗試下面的表達式。 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+"]"; 
    } 
} 
+0

對不起,這應該如何與GSON一起使用? – jackdh

+0

那麼您需要編寫代碼並獲取給定pojo或對象的數據。嘗試閱讀這些鏈接http://stackoverflow.com/questions/5490789/json-parsing-using-gson-for-java和http://www.javacreed.com/simple-gson-example/開始。在一天結束時它的JSONArray,JSONObject或JSONElement。 –

+0

是的,這是我需要幫助的GSON部分。我將如何設置班級能夠接受這兩個或只是第一個原因' – jackdh