![](/img/trans.png)
[英]How do I create an object from a JSON string using Jackson's ObjectMapper?
[英]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.