gpt4 book ai didi

java - 使用 Gson 反序列化包含对象列表的 JSON

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:16 25 4
gpt4 key购买 nike

我正在尝试反序列化一个 JSON,其中包含 Spring Web 应用程序中的字符串和对象列表。

JSON

[
{
"jsonrpc":"2.0",
"result":[
{
"event":{
"id":"27809810",
"name":"Spezia v Trapani",
"countryCode":"IT",
"timezone":"Europe/London",
"openDate":"2016-05-28T16:30:00.000Z"
},
"marketCount":13
},
{
"event":{
"id":"27811083",
"name":"Torino U19 v Atalanta U19",
"countryCode":"IT",
"timezone":"Europe/London",
"openDate":"2016-05-29T16:15:00.000Z"
},
"marketCount":18
},
...
]

我的类(class)是:

ListEventsResponse 类

public class ListEventsResponse {
private String jsonrpc;
private List<ListEventsResult> result;

public ListEventsResponse() { }

public String getJsonrpc() {
return jsonrpc;
}

public void setJsonrpc(String jsonrpc) {
this.jsonrpc = jsonrpc;
}

public List<ListEventsResult> getResult() {
return result;
}

public void setResult(List<ListEventsResult> result) {
this.result = result;
}
}

ListEventsResult 类

public class ListEventsResult {
private Event event;
private int marketCount;

public ListEventsResult() { }

public Event getEvent() {
return event;
}

public void setEvent(Event event) {
this.event = event;
}

public int getMarketCount() {
return marketCount;
}

public void setMarketCount(int marketCount) {
this.marketCount = marketCount;
}
}

我还有事件类,由 5 个字符串(id、名称等)组成。

Controller

[...]
ListEventsResponse listEvents = new Gson().fromJson(response.toString(), ListEventsResponse.class);
List<ListEventsResult> eventsList = listEvents.getResult();
return new ModelAndView("page", "eventsList", eventsList);

我的 .jsp 页面

[...]
<c:forEach items="${eventsList}" var="listEventsResult">
Match: <c:out value="${listEventsResult.name}"/>
</c:forEach>
[...]

我的代码运行并且没有给出任何错误,但我的页面上没有显示任何匹配项,实际上 listEvents 不包含任何对象。

我无法理解如何正确反序列化对象列表,所以我的问题是:包含对象列表的 json 反序列化背后的逻辑是什么?

我发布代码只是为了更好地解释我的问题。

最佳答案

由于您有一个 Json 数组作为响应,因此您需要像下面这样进行反序列化

    Gson gson = new Gson();
Type type = new TypeToken<List<ListEventsResponse>>(){}.getType();
List<ListEventsResponse> events = (List<ListEventsResponse>) gson.fromJson(response.toString(), type);

关于java - 使用 Gson 反序列化包含对象列表的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37505085/

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