gpt4 book ai didi

java - jackson :反序列化到一个集合

转载 作者:行者123 更新时间:2023-11-30 09:50:23 25 4
gpt4 key购买 nike

我在 JSON 反序列化方面遇到了这个特定问题。让我们有这个 JSON 结构:

{
"header":{
"objects":[
{"field":"value1"},
{"field":"value2"}
]
}
}

JSON 结构无法更改,因为它来自第 3 方系统。

现在让我们使用这个简单的 POJO:

@JsonDeserialize(using=PojoDeserializer.class)
public class Pojo {
private string field;

//...getter, setter
}

提到的 PojoDeserializer 获取 {"field": "value"} json 字符串并将其反序列化为 Pojo 实例。所以我可以像这样简单地进行反序列化

Pojo instance = new ObjectMapper().readValue("{\"field\": \"value\"}", Pojo.class);

这是我的问题。让我们有另一个反序列化器 PojosCollectionDeserializer,它采用上述结构并将其反序列化为 Pojo 实例的集合。我想以与前面示例类似的方式使用它:

Collection<Pojo> pojos = new ObjectMapper().readValue("{...}", Collection.class);

但这不起作用,因为没有定义应该使用 PojosCollectionDeserializer 创建 Collection。有什么办法可以实现吗?

最佳答案

我不确定为什么要尝试显式指定反序列化器,因为它可以正常工作,例如:

public class Message {
public Header header; // or, if you prefer, getter and setter
}
public class Header {
public List<Pojo> objects;
}
public class Pojo {
public String field;
}

Message msg = objectMapper.readValue(json, Message.class);

没有任何额外的配置或注释。对于像这样的简单情况,无需构建自定义序列化器或反序列化器。

关于java - jackson :反序列化到一个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5184622/

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