gpt4 book ai didi

java - 如何使用 Jackson 解析不合格的 JSON 数组?

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

因此,我正在访问第三方 API,它为我提供了这个 JSON 对象,但我花了很多时间试图找到一种优雅的方式来使用 Jackson 解析资源子对象。

我假设我必须编写自定义反序列化器,但我想知道是否还有其他方法...

{
"somekey": "somevalue",
"resources": [
"list",
[
{
"@type": "com.yada.Yada",
"resource": {
"@type": "ServiceObjectReference",
"id": "emp1234",
"displayName": "Bob Smith"
},
"type": "TYPE_PERSON",
"resourceType": 200
},
{
"@type": "com.yada.Yada",
"resource": {
"@type": "ServiceObjectReference",
"id": "emp1235",
"displayName": "Sue Smith"
},
"type": "TYPE_PERSON",
"resourceType": 200
}
]
]
}

最佳答案

由于资源的值是一个具有不同对象类型的数组,您可能不想使用 POJO 进行映射。不确定自定义反序列化器的实现,但您可能想使用 ObjectMapper#readTree 方法,而不是根据其类型读取节点值

ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(your_json_input);

JsnoNode resourcesNode = rootNode.path("resources");

for (JsonNode resourceNode : resourcesNode ) {
if (resourceNode.isObject()) {
// the node is an object, you could do POJO mapping now or keep using path() method to go deeper
} else {
// simply get the String value
String list = resourceNode.getTextValue();
}
}

关于java - 如何使用 Jackson 解析不合格的 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684742/

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