gpt4 book ai didi

java - JSON解析数组和同名单个对象

转载 作者:行者123 更新时间:2023-12-02 02:43:10 39 4
gpt4 key购买 nike

我需要解析来自外部源的 JSON 数据。问题是有时数据数组被发送进来,有时它作为单个对象进来,但数组和单个对象具有相同的名称。

{
"OuterObject": {
"Names":[
{
"name": "John Doe"
},
{
"name": "William Watson"
}
]
}
}

但是当 JSON 数组只有一个元素时,它看起来像这样:

{
"OuterObject": {
"Names": {
"name": "John Doe"
}
}
}

我的应用程序需要能够处理其中之一,但不能同时处理两者。

这就是我的 Json 解析类的样子:

@JsonRootName("OuterObject")
public class OuterObject {

@JsonProperty("Names")
private Names names;
@JsonProperty("Names")
private List<Names> namesList;

public Names getNames() {
return names;
}
public void setNames(Names names) {
this.names = names;
}
public List<Names> getNamesList() {
return namesList;
}
public void setNamesList(List<Names> namesList) {
this.namesList = namesList;
}

}

但是,列表和单个对象具有相同的 json 属性名称似乎不起作用。它似乎也不只是使用数组并将单个 json 对象解析到列表中。当数组和对象具有相同名称时,有谁知道我的应用程序可以处理 json 数组和单个 json 对象的任何方法吗?

最佳答案

您只需要使用 List<Names> 类型的单个字段,然后激活功能 ACCEPT_SINGLE_VALUE_AS_ARRAY

YourClass result = mapper.reader(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
.forType(YourClass.class)
.readValue(json);

关于java - JSON解析数组和同名单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45091075/

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