Heim >Backend-Entwicklung >C++ >Warum schlägt meine JSON-Deserialisierung mit der Meldung „Das aktuelle JSON-Objekt kann nicht deserialisiert werden…' fehl?

Warum schlägt meine JSON-Deserialisierung mit der Meldung „Das aktuelle JSON-Objekt kann nicht deserialisiert werden…' fehl?

Linda Hamilton
Linda HamiltonOriginal
2025-01-08 06:11:44815Durchsuche

Why Does My JSON Deserialization Fail with

JSON-Deserialisierung fehlgeschlagen: Das JSON-Objekt konnte nicht in eine Liste von Objekten analysiert werden

Beim Versuch, eine JSON-Zeichenfolge in eine benutzerdefinierte Liste von Objekten zu deserialisieren, tritt möglicherweise die Fehlermeldung auf: „Das aktuelle JSON-Objekt (z. B. {"name":"value"}) kann nicht deserialisiert werden, um „System.Collections.Generic“ .List einzugeben1',因为该类型需要一个JSON数组(例如:[1,2,3]`) korrekt deserialisiert werden.

Dieser Fehler wird dadurch verursacht, dass die JSON-Struktur nicht dem erwarteten Format entspricht. JSON-Arrays werden zur Darstellung von Listen oder Sammlungen verwendet, während JSON-Objekte zur Darstellung von Schlüssel-Wert-Paaren verwendet werden. In diesem Beispiel enthält die JSON-Zeichenfolge ein einzelnes Objekt, dessen Eigenschaft „data“ ein Array von Objekten ist. Um dieses Problem zu lösen, müssen Sie die JSON-Zeichenfolge in eine geeignete Klassenstruktur deserialisieren.

JSON-Struktur verstehen

Die bereitgestellte JSON-String-Struktur lautet wie folgt:

<code class="language-json">{"data":[{"target_id":9503123,"target_type":"user"}]}</code>

Es enthält ein einzelnes Objekt, dessen „Daten“-Eigenschaft ein Array von Objekten ist.

Korrekter Deserialisierungscode

Die Codezeile, die den Fehler verursacht, ist:

<code class="language-csharp">List<rootobject> datalist = JsonConvert.DeserializeObject<list>(jsonstring);</code>

Diese Zeile versucht, eine JSON-Zeichenfolge in eine Liste von RootObject-Objekten zu deserialisieren. Der JSON-String enthält jedoch ein einzelnes Objekt und keine Liste von Objekten. Um diesen Fehler zu beheben, ändern Sie den Code in:

<code class="language-csharp">RootObject datalist = JsonConvert.DeserializeObject<rootobject>(jsonstring);</code>

Dieser korrigierte Code deserialisiert die JSON-Zeichenfolge in ein einzelnes RootObject-Objekt, das korrekt mit der JSON-Struktur übereinstimmt.

Fazit

Sie können den Fehler „Das aktuelle JSON-Objekt konnte nicht deserialisiert werden“ beheben, indem Sie sicherstellen, dass der Code korrekt mit der JSON-Struktur übereinstimmt. Das Verständnis des erwarteten Formats einer JSON-Zeichenfolge ist für eine erfolgreiche Deserialisierung von entscheidender Bedeutung.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine JSON-Deserialisierung mit der Meldung „Das aktuelle JSON-Objekt kann nicht deserialisiert werden…' fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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