Heim >Backend-Entwicklung >C++ >Warum schlägt die JSON-Deserialisierung fehl, wenn ein Listentyp Nicht-Array-JSON-Daten erwartet?
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
<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!