Heim >Backend-Entwicklung >C++ >Warum schlägt die JSON-Deserialisierung fehl, wenn ein Listentyp Nicht-Array-JSON-Daten erwartet?

Warum schlägt die JSON-Deserialisierung fehl, wenn ein Listentyp Nicht-Array-JSON-Daten erwartet?

Linda Hamilton
Linda HamiltonOriginal
2025-01-08 06:17:42885Durchsuche

Why Does JSON Deserialization Fail When a List Type Expects Non-Array JSON Data?

Behandlung von JSON-Deserialisierungsfehlern: Listentyp und Nicht-Array-JSON-Daten

Beim Deserialisieren von JSON-Daten mit JsonConvert von Newtonsoft stoßen Entwickler häufig auf den Fehler: „Das aktuelle JSON-Objekt kann nicht in den Typ ‚System.Collections.Generic.List`1[T]‘ deserialisiert werden, da dafür ein JSON-Array vom Typ A erforderlich ist.“ richtig deserialisieren ”

Dieser Fehler tritt auf, wenn der Zieldatentyp eine Liste ist (in der Fehlermeldung als „Liste 1“ angezeigt), die JSON-Daten jedoch kein Array sind. Um dieses Problem zu beheben, müssen Sie die JSON-Daten so ändern, dass sie dem erwarteten Array-Format entsprechen, oder den Zieldatentyp anpassen, um Nicht-Array-Formate zu akzeptieren.

JSON-Datenkonvertierung

Wenn Ihre JSON-Daten tatsächlich ein Array sind, aber nicht in dieser Form dargestellt werden, müssen Sie sie vor der Deserialisierung in das Array-Format konvertieren. Zu diesem Zweck können Sie die JObject- oder JArray-Klassen von JSON.NET verwenden. Wenn Ihre JSON-Daten beispielsweise das folgende Format haben:

<code>{"data":[{"target_id":9503123,"target_type":"user"}]}</code>

Sie können den folgenden Code verwenden, um es in das Array-Format zu konvertieren:

<code>JObject obj = JObject.Parse(jsonstring);
jsonstring = obj["data"].ToString();</code>

Dadurch werden die JSON-Daten in das folgende Array-Format konvertiert:

<code>[{"target_id":9503123,"target_type":"user"}]</code>

Passen Sie den Zieldatentyp an

Wenn Ihre JSON-Daten kein Array sind, müssen Sie den Zieldatentyp anpassen, um Nicht-Array-Formate zu akzeptieren. In diesem Fall sollten Sie den Typ „List“ in den Typ „RootObject“ ändern. Zum Beispiel:

<code>RootObject datalist = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>

Das obige ist der detaillierte Inhalt vonWarum schlägt die JSON-Deserialisierung fehl, wenn ein Listentyp Nicht-Array-JSON-Daten erwartet?. 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