Heim > Backend-Entwicklung > C++ > Warum scheitert JSON -Deserialisierung, wenn ein Array als Objekt erwartet wird?

Warum scheitert JSON -Deserialisierung, wenn ein Array als Objekt erwartet wird?

Susan Sarandon
Freigeben: 2025-01-27 05:21:11
Original
210 Leute haben es durchsucht

Why Does JSON Deserialization Fail When an Array is Expected as an Object?

Deserialisierung des JSON-Arrays in erwartetes Objekt fehlgeschlagen: „Array kann nicht in Objekt deserialisiert werden“

Der Versuch, ein JSON-Array in ein Objekt einer bestimmten Klasse zu deserialisieren, kann zu folgendem Fehler führen: „Ein JSON-Array (z. B. [1,2,3]) kann nicht deserialisiert werden, um ‚MyClass‘ einzugeben, da dieser Typ JSON-Objekte erfordert.“ (z. B. {"name": "Wert"}) können korrekt deserialisiert werden. "

Dieser Fehler weist darauf hin, dass die JSON-Daten im Array-Format vorliegen, während die Zielklasse ein Einzelobjektformat erwartet. Um dieses Problem zu beheben, beachten Sie Folgendes:

1. JSON-Array in Sammlung deserialisieren:

Wenn Sie ein JSON-Array in eine Sammlung von Objekten deserialisieren möchten, können Sie den Code wie folgt ändern:

var objResponse1 = JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);
Nach dem Login kopieren

In diesem Fall wird das JSON-Array in eine Liste von RetrieveMultipleResponse-Objekten deserialisiert.

2. Stellen Sie sicher, dass der JSON richtig als Objekt formatiert ist:

Alternativ können Sie, wenn Sie die JSON-Daten in ein einzelnes Objekt deserialisieren müssen, überprüfen, ob das JSON korrekt formatiert ist. JSON-Zeichenfolgen sollten in geschweifte Klammern ({}) eingeschlossen werden und Schlüssel-Wert-Paare enthalten. Das folgende JSON-Beispiel stellt ein gültiges Objekt dar:

{
    "Attributes": [
        ...
    ],
    "Name": "account",
    "Id": "1"
}
Nach dem Login kopieren

Nachdem Sie das JSON in ein Objekt formatiert haben, können Sie es mit dem folgenden Code deserialisieren:

var objResponse1 = JsonConvert.DeserializeObject<RetrieveMultipleResponse>(JsonStr);
Nach dem Login kopieren

Weitere Optionen:

  • Sie können der Zielklasse auch ein [JsonArray]-Attribut hinzufügen, um die Deserialisierung aus einem JSON-Array zu erzwingen.
  • Wenn Sie die Kontrolle über die JSON-Daten haben, können Sie diese vor dem Deserialisieren in das gewünschte Objektformat ändern.

Das obige ist der detaillierte Inhalt vonWarum scheitert JSON -Deserialisierung, wenn ein Array als Objekt erwartet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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