Heim > Java > javaLernprogramm > Warum wirft GSON beim Parsen von JSON „Erwartetes BEGIN_OBJECT, war aber BEGIN_ARRAY' aus?

Warum wirft GSON beim Parsen von JSON „Erwartetes BEGIN_OBJECT, war aber BEGIN_ARRAY' aus?

Barbara Streisand
Freigeben: 2024-12-21 16:38:10
Original
302 Leute haben es durchsucht

Why Does GSON Throw

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);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage