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
Susan SarandonOriginal
2025-01-27 05:21:11222Durchsuche

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:

<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);</code>

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:

<code class="language-json">{
    "Attributes": [
        ...
    ],
    "Name": "account",
    "Id": "1"
}</code>

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

<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<RetrieveMultipleResponse>(JsonStr);</code>

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!

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