如何用Jackson解析下面的JSON。使用Jackson ObjectMapper创建的最相关的java对象是什么?

时间:2015-10-12 08:50:21

标签: java json jackson

假设我有这样的JSON响应:

[{
            "employees" : [{
                    "name" : "Peter",
                    "dob" : "19850101"
                }, {
                    "name" : "Mark",
                    "dob" : "19850202"
                }, {
                    "name" : "Steve",
                    "dob" : "19850303"
                }
            ],
            "projects" : [{
                    "reference" : "P1",
                    "name" : "Project One",
                }, {
                    "reference" : "P2",
                    "name" : "Project Two",
                }, {
                    "reference" : "P3",
                    "name" : "Project Three",
                }
            ],
            "projectMembers" : [{
                    "project" : {
                        "reference" : "P1"
                    },
                    "employees" : [{
                            "name" : "Peter",
                            "dob" : "19850101"
                        }, {
                            "name" : "Steve",
                            "dob" : "19850303"
                        }
                    ]
                }, {
                    "project" : {
                        "reference" : "P2"
                    },
                    "employees" : [{
                            "name" : "Peter",
                            "dob" : "19850101"
                        }, {
                            "name" : "Mark",
                            "dob" : "19850101"
                        }, {
                            "name" : "Steve",
                            "dob" : "19850303"
                        }
                    ]
                },
            ]
        }
    ]

如何解析杰克逊的这个JSON。使用Jackson ObjectMapper创建的最相关的java对象是什么?或者这应该使用任何自定义反序列化器来处理?

1 个答案:

答案 0 :(得分:3)

在我的意见中,您将需要两个基本的DTO。一个用于引用Projects的元素,它们有两个字段(引用和名称,都是字符串)和一个Employees,它们也有两个字段(name(String)和dob(Long))。然后,您将需要一个额外的类来处理项目与多个员工的组合(此类有两个字段:一个项目和一个员工列表)。为了能够解析JSON,您必须创建一个包装JSON的DTO。该类将有三个字段,一个是员工列表,一个是项目列表,另一个是将员工分配给项目的列表 例如:

public class Employee{
   private String name;
   private Long dob;
   //default constructor and getter/setter
}

public class Project{
   private String reference;
   private String name;
   //default constructor and getter/setter
}

public class EmployeesToProject{
  private Project project;
  private List<Employee>;
  //default constructor and getter/setter
}

public class CompleteJSON{
   private List<Employee> employees;
   private List<Project> projects;
   private List<EmployeesToProject> projectMembers;
   //default constructor and getter/setter
}

然后,您可以使用CompleteJSON-Class解析您的JSON 您应该将DTO重命名为更具可读性的