gpt4 book ai didi

java - 从 JSON 反序列化复杂的 map 结构

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:52 24 4
gpt4 key购买 nike

我有一个像这样的 JSON 结构:

[
{
"topLevelOne": {
"property1": false,

},
"topLevelTwo": [
{
"property2": false,
"property3": false,
"property4": false,
},
{
"property2": false,
"property3": false,
"property4": false,
}
]
},

{
"topLevelOne": {
"property1": false,

},
"topLevelTwo": [
{
"property2": false,
"property3": false,

},
{
"property2": false,
"property3": false,
},
]
}
]

我正在尝试将 Jackson 的结构转换为 Map<CustomObject, List<CustomObject>>其中 topLevelOne对应于Key , 值为 topLevelTwo ( List<CustomObject> )

所以我试了一下:

ObjectMapper JSONMapper = new ObjectMapper();
Map<CustomObject, List<CustomObject>> map = JSONMapper.readValue(json, new TypeReference<Map<CustomObject, List<CustomObject>>>(){});

但是我收到此错误消息: com.fasterxml.jackson.databind.JsonMappingException: Can not find a (Map) Key deserializer for type [simple type, class CustomObject ]

谁能指出我在这里做错了什么?也许一个代码示例如何实现?

最佳答案

json 无效,因为您在结构中的同一级别混合了类型。我认为您可以使用 Map of Maps 来完成您想要的。我不确定您的自定义对象,所以我会使用字符串以防有帮助。

如果您这样定义 json:

[{
"topLevelOne": [{
"property1": false
}],
"topLevelTwo": [{
"property2": false,
"property3": false,
"property4": false
},
{
"property2": false,
"property3": false,
"property4": false
}
]
},

{
"topLevelOne": [{
"property1": false

}],
"topLevelTwo": [{
"property2": false,
"property3": false

},
{
"property2": false,
"property3": false
}
]
}
]

你可以这样阅读它:

Map<String, Map<String,String>> map = mapper.readValue(json, new TypeReference <Map<String, Map<String,String>>>(){});

关于java - 从 JSON 反序列化复杂的 map 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51088620/

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