"firstName": "Abc", "lastName": "Xyz"是如何解析的?谢谢!
Topic source很明显,需要再定义一个Author类:
Class Author {
public String firstName;
public String lastName;
}
并在Book类添加成员属性:
public Author author;
就可以解析并通过book.author.firstName和book.author.lastName访问。
不知道有没有更好的处理方法。
我是使用了一个HashMap来进行接收的,这个就是赋值给对应类型的变量接收就行。可以参考一下我的代码,另外其他几位大佬的也可以实现同样的效果。
// Main方法
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
InputStream input = Main.class.getResourceAsStream("/book.json");
ObjectMapper mapper = new ObjectMapper();
// mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Book book = mapper.readValue(input,Book.class);
System.out.println(book.id);
System.out.println(book.name);
HashMap<String,String> authors = book.authors;
System.out.println(authors.get("firstName"));
System.out.println(authors.get("lastName"));
System.out.println(book.isbn);
List<String> tags = book.tags;
for (String str : tags) {
System.out.println(str);
}
// System.out.println(book.pubDate);
//book.json
{
"id":1,
"name":"Java核心技术",
"authors":{
"firstName":"Abc",
"lastName":"Xyz"
},
"isbn":"1234567",
"tags":["Java","Network"]
}
// Book.java
public class Book {
public long id;
public String name;
public HashMap<String,String> authors;
public String isbn;
public List<String> tags;
// public LocalDate pubDate;
}
- 1
未完成0000_642
{
"id": 1,
"name": "Java核心技术",
"author": { "firstName": "Abc", "lastName": "Xyz" },
"isbn": "1234567",
"tags": ["Java", "Network"]}