在这里,我有一些由詹金斯(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+"]";
    }
}

09-10 01:57
查看更多