![](/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.