有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用相同的命名父级访问值

这里我有一些由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) 个答案

  1. # 1 楼答案

    试试下面的表达。0索引将为您提供第一个元素

    jobs[0].lastBuild.actions[0].causes
    

    这会给你

    [
       [
          {
             "shortDescription":"Started by user XXX"
          }
       ]
    ]
    

    如有必要,请更改表达式

    下面所有类的Java代码——基于json格式

    所以你需要像詹金乔布斯这样的人。乔布斯(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+"]";
        }
    }