Heim >Backend-Entwicklung >C++ >Warum schlägt die JSON-Deserialisierung fehl, wenn versucht wird, ein Objekt in eine Liste zu konvertieren?
JSON-Deserialisierungsproblem: Objekt kann nicht in Liste konvertiert werden
Beim Versuch, ein JSON-Objekt in eine Liste benutzerdefinierter Objekte zu deserialisieren, stoßen Entwickler möglicherweise auf den Fehler: „Das aktuelle JSON-Objekt (zum Beispiel: {“name“: „value“}) kann nicht in den Typ „System.Collections“ deserialisiert werden .Generic.List`1[...]'". Dieses Problem tritt auf, wenn die JSON-Struktur nicht mit dem Ziel-Deserialisierungstyp übereinstimmt.
Bedenken Sie den folgenden Codeausschnitt:
<code class="language-csharp">string jsonstring = "{\"data\":[{\"target_id\":9503123,\"target_type\":\"user\"}]}"; List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);</code>
In diesem Szenario ist der Ziel-Deserialisierungstyp List
Lösung:
Um dieses Problem zu beheben, muss der Ziel-Deserialisierungstyp angepasst werden, um ihn an die JSON-Struktur anzupassen.
Korrekte Deserialisierung:
<code class="language-csharp">RootObject data = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>
Durch die Änderung des Deserialisierungstyps in RootObject wird der Code nun an der JSON-Struktur ausgerichtet und der Deserialisierungsprozess wird erfolgreich ohne den oben genannten Fehler abgeschlossen. Wenn Sie auf target_id
und target_type
zugreifen müssen, müssen Sie das data
-Objekt weiter verarbeiten, zum Beispiel: data.data[0].target_id
.
Das obige ist der detaillierte Inhalt vonWarum schlägt die JSON-Deserialisierung fehl, wenn versucht wird, ein Objekt in eine Liste zu konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!