2016-05-29 23 views
1

Ich versuche ein JSON zu deserialisieren, das eine Zeichenfolge und eine Liste von Objekten in meiner Spring-Webanwendung enthält.Deserialisieren eines JSON mit einer Liste von Objekten mit Gson

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

Meine Klassen sind:

ListEventsResponse Klasse

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 Klasse

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

Ich habe auch Ereignisklasse, bestehend aus 5 String (ID, Name, etc.).

-Controller

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

Meine .jsp Seite

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

Mein Code läuft und geben keinen Fehler, aber keine Übereinstimmung auf meiner Seite angezeigt wird, in der Tat listEvents enthält kein Objekt.

Ich kann nicht verstehen, wie man die Liste der Objekte richtig deserialisiert, also ist meine Frage: welche Logik ist hinter der Deserialisierung eines JSON, das eine Liste von Objekten enthält?

Ich poste meinen Code, nur um mein Problem besser zu erklären.

Antwort

0

Wie Sie ein JSON-Array als Antwort haben, müssen Sie wie unten

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

happyCoding deserialisieren;

Verwandte Themen