使用Gson从java.util.List恢复JSON数组

时间:2015-06-26 21:04:28

标签: java json

我正在尝试从POJO中的List恢复JSON数组。

JSON字符串

{
  "project": {
    "name": "Untitled Project",
    "created_at": "2014-11-23T01:01:59Z",
    "builds": [
      {
        "automation_build": {
          "name": "JUnit   Sample",
          "automation_project_id": 16214,
          "created_at": "2015-03-02T20:14:21Z",
          "id": 2049424,
          "group_id": 764496,
          "status": "done",
          "tags": null,
          "delta": false,
          "duration": 5200640,
          "hashed_id": "5bf65fe493fa859d141ed9e707b4fa435461146b",
          "user_id": 783527,
          "updated_at": "2015-05-02T00:51:41Z"
        }
      },
      {
        "automation_build": {
          "name": "Untitled Build",
          "automation_project_id": 16214,
          "created_at": "2015-06-09T11:45:47Z",
          "id": 2682799,
          "group_id": 764496,
          "status": "running",
          "tags": null,
          "delta": false,
          "duration": null,
          "hashed_id": "5747e47778fff269508d36c98beaff0b8f2f5722",
          "user_id": 783527,
          "updated_at": "2015-06-09T11:45:48Z"
        }
      }
    ],
    "id": 16214,
    "group_id": 764496,
    "user_id": null,
    "updated_at": "2015-06-16T19:39:42Z"
  }
}

与GSON一起使用的ProjectPOJO类

public class ProjectPOJO {

    private Project project = new Project();

    public Project getProject() {
        return project;
    }

    public void setProject(Project project) {
        this.project = project;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [project = " + project + "]";
    }

}

项目POJO

public class Project {

    private Integer id;
    private List<Build> builds = new ArrayList<Build>();
    private Integer group_id;
    private String created_at;
    private Object user_id;    
    private String name;
    private String updated_at;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public List<Build> getBuilds() {
        return builds;
    }
    public void setBuilds(List<Build> builds) {
        this.builds = builds;
    }
    public Integer getGroup_id() {
        return group_id;
    }
    public void setGroup_id(Integer group_id) {
        this.group_id = group_id;
    }
    public String getCreated_at() {
        return created_at;
    }
    public void setCreated_at(String created_at) {
        this.created_at = created_at;
    }
    public Object getUser_id() {
        return user_id;
    }
    public void setUser_id(Object user_id) {
        this.user_id = user_id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getUpdated_at() {
        return updated_at;
    }
    public void setUpdated_at(String updated_at) {
        this.updated_at = updated_at;
    }

    @Override
    public String toString() {
        return "Project [id=" + id + ", builds=" + builds + ", group_id="
                + group_id + ", created_at=" + created_at + ", user_id="
                + user_id + ", name=" + name + ", updated_at=" + updated_at
                + ", getId()=" + getId() + ", getBuilds()=" + getBuilds()
                + ", getGroup_id()=" + getGroup_id() + ", getCreated_at()="
                + getCreated_at() + ", getUser_id()=" + getUser_id()
                + ", getName()=" + getName() + ", getUpdated_at()="
                + getUpdated_at() + ", getClass()=" + getClass()
                + ", hashCode()=" + hashCode() + ", toString()="
                + super.toString() + "]";
    }    

}

建立POJO

public class Build {

    private AutomationBuild automationBuild = new AutomationBuild();

    public AutomationBuild getAutomationBuild() {
        return automationBuild;
    }

    public void setAutomationBuild(AutomationBuild automationBuild) {
        this.automationBuild = automationBuild;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [automation_build = " + automationBuild + "]";
    }

}

AutomationBuild POJO

package br.usp.icmc.beans;

public class AutomationBuild extends BaseAutomationBuild {

    private Integer id;
    private Integer group_id;   
    private Object tags;   
    private Integer automation_project_id;
    private String created_at;
    private Integer user_id;
    private Boolean delta;      
    private String updated_at;

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getGroup_id() {
        return group_id;
    }
    public void setGroup_id(Integer group_id) {
        this.group_id = group_id;
    }
    public Object getTags() {
        return tags;
    }
    public void setTags(Object tags) {
        this.tags = tags;
    }
    public Integer getAutomation_project_id() {
        return automation_project_id;
    }
    public void setAutomation_project_id(Integer automation_project_id) {
        this.automation_project_id = automation_project_id;
    }
    public String getCreated_at() {
        return created_at;
    }
    public void setCreated_at(String created_at) {
        this.created_at = created_at;
    }
    public Integer getUser_id() {
        return user_id;
    }
    public void setUser_id(Integer user_id) {
        this.user_id = user_id;
    }
    public Boolean getDelta() {
        return delta;
    }
    public void setDelta(Boolean delta) {
        this.delta = delta;
    }
    public String getUpdated_at() {
        return updated_at;
    }
    public void setUpdated_at(String updated_at) {
        this.updated_at = updated_at;
    }
    @Override
    public String toString() {
        return "AutomationBuild [id=" + id + ", group_id=" + group_id
                + ", tags=" + tags + ", automation_project_id="
                + automation_project_id + ", created_at=" + created_at
                + ", user_id=" + user_id + ", delta=" + delta + ", updated_at="
                + updated_at + ", getId()=" + getId() + ", getGroup_id()="
                + getGroup_id() + ", getTags()=" + getTags()
                + ", getAutomation_project_id()=" + getAutomation_project_id()
                + ", getCreated_at()=" + getCreated_at() + ", getUser_id()="
                + getUser_id() + ", getDelta()=" + getDelta()
                + ", getUpdated_at()=" + getUpdated_at() + ", getName()="
                + getName() + ", getDuration()=" + getDuration()
                + ", getStatus()=" + getStatus() + ", getHashed_id()="
                + getHashed_id() + ", toString()=" + super.toString()
                + ", getClass()=" + getClass() + ", hashCode()=" + hashCode()
                + "]";
    }

}

我使用的代码

System.out.println(obj.getProject().getBuilds().get(0).getAutomationBuild().getHashed_id());

我测试过:

System.out.println(obj.getProject()); 
            System.out.println(obj.getProject().getBuilds()); 
            System.out.println(obj.getProject().getBuilds().get(0)); 
System.out.println(obj.getProject().getBuilds().get(0).getAutomationBuild());

结果:

Project [id=16214, builds=[ClassPojo [automation_build = AutomationBuild [id=null, group_id=null, tags=null, automation_project_id=null, created_at=null, user_id=null, delta=null, updated_at=null, getId()=null, getGroup_id()=null, getTags()=null, getAutomation_project_id()=null, getCreated_at()=null, getUser_id()=null, getDelta()=null, getUpdated_at()=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, toString()=AbstractBuildAutomation [name=null, duration=null, status=null, hashed_id=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028, toString()=br.usp.icmc.beans.AutomationBuild@2d7275fc], getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028]], ClassPojo [automation_build = AutomationBuild [id=null, group_id=null, tags=null, automation_project_id=null, created_at=null, user_id=null, delta=null, updated_at=null, getId()=null, getGroup_id()=null, getTags()=null, getAutomation_project_id()=null, getCreated_at()=null, getUser_id()=null, getDelta()=null, getUpdated_at()=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, toString()=AbstractBuildAutomation [name=null, duration=null, status=null, hashed_id=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=966739377, toString()=br.usp.icmc.beans.AutomationBuild@399f45b1], getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=966739377]]], group_id=764496, created_at=2014-11-23T01:01:59Z, user_id=null, name=Untitled Project, updated_at=2015-06-16T19:39:42Z, getId()=16214, getBuilds()=[ClassPojo [automation_build = AutomationBuild [id=null, group_id=null, tags=null, automation_project_id=null, created_at=null, user_id=null, delta=null, updated_at=null, getId()=null, getGroup_id()=null, getTags()=null, getAutomation_project_id()=null, getCreated_at()=null, getUser_id()=null, getDelta()=null, getUpdated_at()=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, toString()=AbstractBuildAutomation [name=null, duration=null, status=null, hashed_id=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028, toString()=br.usp.icmc.beans.AutomationBuild@2d7275fc], getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028]], ClassPojo [automation_build = AutomationBuild [id=null, group_id=null, tags=null, automation_project_id=null, created_at=null, user_id=null, delta=null, updated_at=null, getId()=null, getGroup_id()=null, getTags()=null, getAutomation_project_id()=null, getCreated_at()=null, getUser_id()=null, getDelta()=null, getUpdated_at()=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, toString()=AbstractBuildAutomation [name=null, duration=null, status=null, hashed_id=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=966739377, toString()=br.usp.icmc.beans.AutomationBuild@399f45b1], getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=966739377]]], getGroup_id()=764496, getCreated_at()=2014-11-23T01:01:59Z, getUser_id()=null, getName()=Untitled Project, getUpdated_at()=2015-06-16T19:39:42Z, getClass()=class br.usp.icmc.beans.Project, hashCode()=952562199, toString()=br.usp.icmc.beans.Project@38c6f217]
[ClassPojo [automation_build = AutomationBuild [id=null, group_id=null, tags=null, automation_project_id=null, created_at=null, user_id=null, delta=null, updated_at=null, getId()=null, getGroup_id()=null, getTags()=null, getAutomation_project_id()=null, getCreated_at()=null, getUser_id()=null, getDelta()=null, getUpdated_at()=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, toString()=AbstractBuildAutomation [name=null, duration=null, status=null, hashed_id=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028, toString()=br.usp.icmc.beans.AutomationBuild@2d7275fc], getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028]], ClassPojo [automation_build = AutomationBuild [id=null, group_id=null, tags=null, automation_project_id=null, created_at=null, user_id=null, delta=null, updated_at=null, getId()=null, getGroup_id()=null, getTags()=null, getAutomation_project_id()=null, getCreated_at()=null, getUser_id()=null, getDelta()=null, getUpdated_at()=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, toString()=AbstractBuildAutomation [name=null, duration=null, status=null, hashed_id=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=966739377, toString()=br.usp.icmc.beans.AutomationBuild@399f45b1], getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=966739377]]]
ClassPojo [automation_build = AutomationBuild [id=null, group_id=null, tags=null, automation_project_id=null, created_at=null, user_id=null, delta=null, updated_at=null, getId()=null, getGroup_id()=null, getTags()=null, getAutomation_project_id()=null, getCreated_at()=null, getUser_id()=null, getDelta()=null, getUpdated_at()=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, toString()=AbstractBuildAutomation [name=null, duration=null, status=null, hashed_id=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028, toString()=br.usp.icmc.beans.AutomationBuild@2d7275fc], getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028]]
AutomationBuild [id=null, group_id=null, tags=null, automation_project_id=null, created_at=null, user_id=null, delta=null, updated_at=null, getId()=null, getGroup_id()=null, getTags()=null, getAutomation_project_id()=null, getCreated_at()=null, getUser_id()=null, getDelta()=null, getUpdated_at()=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, toString()=AbstractBuildAutomation [name=null, duration=null, status=null, hashed_id=null, getName()=null, getDuration()=null, getStatus()=null, getHashed_id()=null, getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028, toString()=br.usp.icmc.beans.AutomationBuild@2d7275fc], getClass()=class br.usp.icmc.beans.AutomationBuild, hashCode()=762476028]

为什么我收到空?我哪里错了?

1 个答案:

答案 0 :(得分:1)

在Build类

vector

public class Build { private AutomationBuild automationBuild = new AutomationBuild(); 应为automationBuild。它应该像

automation_build

因为Json看起来像

public class Build {

private AutomationBuild automation_build= new AutomationBuild();