我如何用 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"
                        }
                    ]
                },
            ]
        }
    ]

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

在我看来,您将需要两个基本的 DTO。一个用于引用 Projects 的元素,它将有两个字段(reference 和 name,都是字符串),一个用于 Employees,它也将有两个字段(name (String) 和 dob (Long))。然后你将需要一个额外的 Class 来处理一个项目到多个员工的组合(这个 class 有两个字段:一个项目和一个员工列表)。为了能够解析 JSON,您必须创建一个 DTO 包装您的 JSON。此 Class 将包含三个字段,一份员工列表、一份项目列表和一份 class 将员工分配给项目的列表。
例如这样的事情:

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 重命名为更易读的名称