繁体   English   中英

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

[英]How do I parse the below JSON with Jackson. What is the most relevant java object to create for using Jackson ObjectMapper?

假设我有这样的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对象是什么? 或者这应该使用任何自定义反序列化器来处理?

在我的意见中,您将需要两个基本的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重命名为更具可读性的东西

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM