gpt4 book ai didi

java - Jackson 将字符串反序列化为参数化映射

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

我有一个以下结构的 json 字符串:

{   
"1": { ... },
"2": { ... },
"3": { ... }
}

其中 1、2 和 3 是标识符。

我想反序列化该字符串并将其转换为以下类型 - Map<Integer, List<MyCustomPojo>>

问题是每个值 { ... }有它自己的结构,但我需要解析它们并转换为通用结构 - MyCustomPojo .

我可以通过实现自定义反序列化器来做到这一点:

public class CustomMapDeserializer extends JsonDeserializer<Map<Integer, List<MyCustomPojo>>> {

@Override
public Map<Integer, List<MyCustomPojo>> deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException {
JsonNode root = jsonParser.getCodec().readTree(jsonParser);

// parse JsonNode and return Map<Integer, List<MyCustomPojo>>
}

现在我需要将此反序列化器添加到模块中,然后使用对象映射器注册它。

SimpleModule module = new SimpleModule();
module.addDeserializer(Map.class, new CustomMapDeserializer()); // can’t specify type for map
objectMapper.registerModule(module);

问题是现在它将应用于我的应用程序中的所有 Map 类。我希望它仅适用于参数化 map - Map<Integer, List<MyCustomPojo>>.

可以吗?

最佳答案

最简单的解决方案应该是创建一个继承自 Map 的新类,并在添加反序列化器时使用它

关于java - Jackson 将字符串反序列化为参数化映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47634762/

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