Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Jackson解析下面的JSON。使用Jackson ObjectMapper创建的最相关java对象是什么?_Java_Json_Jackson - Fatal编程技术网

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

如何使用Jackson解析下面的JSON。使用Jackson ObjectMapper创建的最相关java对象是什么?,java,json,jackson,Java,Json,Jackson,假设我有一个JSON响应,如下所示: [{ "employees" : [{ "name" : "Peter", "dob" : "19850101" }, { "name" : "Mark", "dob" : "19850202" }, {

假设我有一个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。一个用于引用项目的元素,它将有两个字段(引用和名称,均为字符串),另一个用于雇员,它也将有两个字段(名称(字符串)和dob(长))。然后,您将需要一个额外的类来处理一个项目对多个员工的组合(这个类有两个字段:一个项目和一个员工列表)。为了能够解析JSON,您必须创建一个DTO来包装JSON。该类将有三个字段:一个员工列表、一个项目列表和一个将员工分配到项目的类列表。
例如,类似这样的事情:

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
}
公共类员工{
私有字符串名称;
私人长dob;
//默认构造函数和getter/setter
}
公共类项目{
私有字符串引用;
私有字符串名称;
//默认构造函数和getter/setter
}
公共类员工项目{
私人项目;
私人名单;
//默认构造函数和getter/setter
}
公共类CompleteJSON{
私人名单雇员;
私人清单项目;
私人名单项目成员;
//默认构造函数和getter/setter
}
然后可以使用CompleteJSON类解析JSON
您应该将DTO重命名为更可读的名称