gpt4 book ai didi

java - 反序列化 POJO 列表,而不是一次反序列化单个 POJO

转载 作者:行者123 更新时间:2023-12-01 23:37:35 25 4
gpt4 key购买 nike

所以我遇到了这个教程,将 POJO 序列化为 json,然后将 json 文件反序列化回 POJO。 http://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

他使用了这些有用的方法,这些方法对我有用,但仅适用于文件中的单个 POJO:

//1. Convert Java object to JSON format
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(new File("c:\\user.json"), user);

//2. Convert JSON to Java object
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("c:\\user.json"), User.class);

如何反序列化 POJO 列表?我的序列化文件如下所示:

[ {
"name" : {
"first" : "Wonder",
"last" : "Woman"
},
"ssn" : "123-456-7890",
"gender" : "FEMALE",
"verified" : false
}, {
"name" : {
"first" : "Bat",
"last" : "Man"
},
"ssn" : "321-456-0987",
"gender" : "FEMALE",
"verified" : true
}, {
"name" : {
"first" : "Super",
"last" : "Man"
},
"ssn" : "321-654-1111",
"gender" : "FEMALE",
"verified" : true
} ]

最佳答案

  1. 一个选项(可能是最简单的)是定义一个包含 User 列表的类。 s:

    public class Users
    {
    public User[] users;
    }

    然后执行

    ObjectMapper mapper = new ObjectMapper();
    Users users = mapper.readValue(new File("c:\\user.json"), Users.class);
  2. 另一种选择是迭代 json 数组,并捕获用户数组的每个元素,然后使用 ObjectMapper.readValue(String content, Class<T> valueType) ,像这样:

    ObjectMapper mapper = new ObjectMapper();
    InputStream stream = new FileInputStream("c:\\user.json");
    User user;

    JsonNode json = mapper.readTree(stream);

    //NOTE: calling json.isArray() should return true.
    for (JsonNode userJson : json)
    {
    user = mapper.readValue(userJson, User.class);
    // use the constructed user...
    }

    注意:我还没有测试过上述内容,所以请告诉我它是否有效。

关于java - 反序列化 POJO 列表,而不是一次反序列化单个 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18452129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com