Discuss / Java / "firstName": "Abc", "lastName": "Xyz"是如何解析的?谢谢!

"firstName": "Abc", "lastName": "Xyz"是如何解析的?谢谢!

Topic source

{

    "id": 1,

    "name": "Java核心技术",

    "author": { "firstName": "Abc", "lastName": "Xyz" },

    "isbn": "1234567",

    "tags": ["Java", "Network"]}

很明显,需要再定义一个Author类:

Class Author {
    public String firstName;
    public String lastName;
}

并在Book类添加成员属性:

public Author author;

就可以解析并通过book.author.firstName和book.author.lastName访问。

不知道有没有更好的处理方法。

public Map<String,String> author;

我用map好像没问题的

author 的get/set方法加上

细水静流

#5 Created at ... [Delete] [Delete and Lock User]

我是使用了一个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

Reply