gpt4 book ai didi

java - 使用自定义类名反序列化具有不同根名称的 json

转载 作者:行者123 更新时间:2023-12-02 09:12:50 25 4
gpt4 key购买 nike

我有一个具有以下结构的 json:

{
"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;
}
}

public class Results {

@JsonProperty("listingPrice")
private String listingPrice;
@JsonProperty("shortDescription")
private String shortDescription;
@JsonProperty("title")
private String title;

//getters and setters...
}


读作

objMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
ResultsHolder res = objMapper.readValue(new URL(url), ResultsHolder.class);
List<Results> cons = res.getResults();

1) 现在我不希望我的类被称为“结果”而是“列表”。我怎样才能做到这一点?

2) 是否可以避免使用 ResultsHolder 而是直接将 json 作为列表或数组读取?

最佳答案

  1. 您可以更改您的 class命名为任何你想要的东西而不是结果,但你必须确保对象名称是 ResultsHolder class 中的结果。

  2. 是的,可以,为了直接读取列表

    List<Results> cons = objMapper.readValue(new URL(url), new TypeReference<List<Results>>(){});

详情可以查看here

关于java - 使用自定义类名反序列化具有不同根名称的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59260057/

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