Java 使用自定义类名反序列化具有不同根名称的json
我有一个json具有以下结构:Java 使用自定义类名反序列化具有不同根名称的json,java,json,jackson,Java,Json,Jackson,我有一个json具有以下结构: { "results": [ { "listingPrice": "free", "shortDescription": "desc", "title": "one", }, { "listingPrice": "free", "shortDescription": "desc",
{
"results": [
{
"listingPrice": "free",
"shortDescription": "desc",
"title": "one",
},
{
"listingPrice": "free",
"shortDescription": "desc",
"title": "two",
}
]
}
相应的类别为:
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"results"
})
public class ResultsHolder {
@JsonProperty("results")
private List<Results> results = null;
@JsonProperty("results")
public List<Results> getResults() {
return results;
}
@JsonProperty("results")
public void setResults(List<Results> results) {
this.results = results;
}
}
读作
objMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
ResultsHolder res = objMapper.readValue(new URL(url), ResultsHolder.class);
List<Results> cons = res.getResults();
objMapper.configure(反序列化功能。接受单个值作为数组,true);
ResultsHolder res=objMapper.readValue(新URL,ResultsHolder.class);
List cons=res.getResults();
1) 现在我不希望我的类被称为Results,而是Listing。我该怎么做
2) 是否可以避免使用ResultsHolder而直接将json作为列表或数组读取
类
名称更改为您想要的任何内容,而不是结果,但您必须确保在ResultsHolder类
List cons=objMapper.readValue(新的URL,新的TypeReference(){})代码>
有关详细信息,您可以查看您的第一个问题,您的意思是“我不希望我的类被称为结果,而是列表”?您可以使用新名称重构它。顺便说一句,您不必为每个变量或方法添加
@JsonProperty
,因为它们的名称与JSON字符串中的字段名称相同。感谢1)我在尝试时也更改了变量名称。你能详细说明一下吗?
objMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
ResultsHolder res = objMapper.readValue(new URL(url), ResultsHolder.class);
List<Results> cons = res.getResults();