JSON 配列の予期されたオブジェクトへの逆シリアル化に失敗しました: 「配列をオブジェクトに逆シリアル化できません」
JSON 配列を特定のクラスのオブジェクトに逆シリアル化しようとすると、「JSON 配列 (例: [1,2,3]) を 'MyClass' 型に逆シリアル化できません。その型には JSON オブジェクトが必要であるためです」というエラーが発生する場合があります。 ({"name":"value"} など) は正しく逆シリアル化できます。"
このエラーは、ターゲット クラスが単一のオブジェクト形式を予期しているのに、JSON データが配列形式であることを示します。この問題を解決するには、次の点を考慮してください:
1. JSON 配列をコレクションに逆シリアル化します:
JSON 配列をオブジェクトのコレクションに逆シリアル化する場合は、コードを次のように変更できます。
<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);</code>
この場合、JSON 配列は RetrieveMultipleResponse オブジェクトのリストに逆シリアル化されます。
2. JSON がオブジェクトとして適切にフォーマットされていることを確認します。
また、JSON データを単一のオブジェクトに逆シリアル化する必要がある場合は、JSON が正しくフォーマットされていることを確認できます。 JSON 文字列は中括弧 ({}) で囲み、キーと値のペアを含める必要があります。次の JSON の例は、有効なオブジェクトを表します:
<code class="language-json">{ "Attributes": [ ... ], "Name": "account", "Id": "1" }</code>
JSON をオブジェクトにフォーマットした後、次のコードを使用して逆シリアル化できます。
<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<RetrieveMultipleResponse>(JsonStr);</code>
その他のオプション:
[JsonArray]
属性をターゲット クラスに追加して、JSON 配列から強制的に逆シリアル化することもできます。 以上が配列がオブジェクトとして期待されている場合に JSON 逆シリアル化が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。