GSON wirft „BEGIN_OBJECT erwartet, war aber BEGIN_ARRAY“?
Beim Versuch, eine JSON-Zeichenfolge mithilfe von GSON in eine Liste von Objekten zu analysieren, haben Sie Möglicherweise tritt der Fehler „Erwartetes BEGIN_OBJECT, war aber BEGIN_ARRAY“ auf. Dies tritt auf, wenn es sich bei den bereitgestellten JSON-Daten um ein Array handelt, während Sie ein Objekt erwarten.
Um dieses Problem zu beheben, sollten Sie Ihren Parsing-Code an die Array-Struktur anpassen. Hier ist eine Aufschlüsselung des Problems und die richtige Lösung:
Problem:
Die bereitgestellten JSON-Daten sind ein Array von Objekten und nicht ein einzelnes Objekt. Ihr Code versucht jedoch, es als einzelnes Objekt zu analysieren, was zu dem Fehler führt.
Lösung:
Um das Problem zu beheben, müssen Sie das JSON angeben stellt ein Array von Objekten dar. Dies kann erreicht werden, indem Sie Ihren Code ändern, um den JSON in ein Array Ihrer Objektklasse zu analysieren:
ChannelSearchEnum[] enums = gson.fromJson(jstring, ChannelSearchEnum[].class);
Auf diese Weise analysiert GSON den JSON korrekt als Array von ChannelSearchEnum-Objekten.
Alternative Lösung:
Für mehr Flexibilität können Sie die TypeToken-Klasse verwenden, um eine parametrisierte Klasse zu definieren Geben Sie den Typ für die Sammlung ein, in die Sie analysieren möchten, wie unten gezeigt:
Type collectionType = new TypeToken<Collection<ChannelSearchEnum>>() {}.getType(); Collection<ChannelSearchEnum> enums = gson.fromJson(jstring, collectionType);
Mit diesem Ansatz können Sie den JSON in eine Sammlung von ChannelSearchEnum-Objekten analysieren, bei denen es sich um eine Liste, einen Satz oder eine andere Sammlung handeln kann Typ.
Das obige ist der detaillierte Inhalt vonWarum wirft GSON beim Parsen von JSON „Erwartetes BEGIN_OBJECT, war aber BEGIN_ARRAY' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!