簡體   English   中英

使用Gson反序列化包含對象列表的JSON

[英]Deserialize a JSON containing a list of objects using Gson

我正在嘗試反序列化包含String和Spring Web應用程序中的對象列表的JSON。

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
    },
...
]

我的課程是:

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

我還有Event類 ,由5個字符串(id,name等)組成。

調節器

[...]
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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM