gpt4 book ai didi

java - Jackson 将动态 json 转换为 map

转载 作者:行者123 更新时间:2023-11-30 02:41:03 24 4
gpt4 key购买 nike

我遇到一个问题,json 的某些结构是固定的,而某些部分是动态的。最终输出必须是类型为

的对象
Map<String,List<Map<String,String>>>

我正在粘贴 Jackson 工作的示例 json 代码 -

    {
"contentlets": [
{
"template": "8f8fab8e-0955-49e1-a2ed-ff45e3296aa8",
"modDate": "2017-01-06 13:13:20.0",
"cachettl": "0",
"title": "New Early Warnings",
"subscribeToListIi": "am@zz.com",
"inode": "15bd497-1d8e-4bc7-b0f4-c799ed89fdc9",
"privacySetting": "public",
"__DOTNAME__": "New gTLD Early Warnings",
"activityStatus": "Completed",
"host": "10b6f94a-7671-4e08-9f4b-27bca80702e7",
"languageId": 1,
"createNotification": false,
"folder": "951ff45c-e844-40d4-904f-92b0d2cd0c3c",
"sortOrder": 0,
"modUser": "dotcms.org.2897"
}
]
}


ObjectMapper mapper = new ObjectMapper();
Map<String,List<Map<String,String>>> myMap=mapper.readValue(responseStr.getBytes(), new TypeReference<HashMap<String,List<Map<String,String>>>>() {});

上面的代码工作正常,但是当 json 更改为(基本上添加了元数据标记)时,它无法转换为 map 。

{
"contentlets": [
{
"template": "8f8fab8e-0955-49e1-a2ed-ff45e3296aa8",
"modDate": "2017-01-06 13:13:20.0",
"cachettl": "0",
"title": "New gTLD Early Warnings",
"subscribeToListIi": "aml@bb.com",
"inode": "15bd4057-1d8e-4bc7-b0f4-c799ed89fdc9",
"metadata": {
"author": "jack",
"location": "LA"
},
"privacySetting": "public",
"__DOTNAME__": "New gTLD Early Warnings",
"activityStatus": "Completed",
"host": "10b6f94a-7671-4e08-9f4b-27bca80702e7",
"languageId": 1,
"createNotification": false,
"folder": "951ff45c-e844-40d4-904f-92b0d2cd0c3c",
"sortOrder": 0,
"modUser": "dotcms.org.2897"
}
]
}

最佳答案

这是预期的,因为元数据值的类型不是String。如果您相应地更改 map 的类型,那么它就可以工作:

Map<String,List<Map<String,Object>>> myMap = mapper.readValue(reader, new TypeReference<HashMap<String,List<Map<String,Object>>>>() {});

当然,您会遇到映射中的值不是同一类型的问题。所以你需要问自己你想要的数据结构是什么以及如何进一步处理它。但是,无法将 json 结构反序列化为简单的 String

关于java - Jackson 将动态 json 转换为 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41679720/

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