ホームページ > バックエンド開発 > C++ > JSON 逆シリアル化が「現在の JSON オブジェクトを逆シリアル化できません...」というメッセージで失敗するのはなぜですか?

JSON 逆シリアル化が「現在の JSON オブジェクトを逆シリアル化できません...」というメッセージで失敗するのはなぜですか?

Linda Hamilton
リリース: 2025-01-08 06:11:44
オリジナル
810 人が閲覧しました

Why Does My JSON Deserialization Fail with

JSON 逆シリアル化に失敗しました: JSON オブジェクトをオブジェクトのリストに解析できません

JSON 文字列をオブジェクトのカスタム リストに逆シリアル化しようとすると、「現在の JSON オブジェクト (例: {"name":"value"}) を 'System.Collections.Generic' .List[1,2,3]`) が正しく逆シリアル化されます。」 1',因为该类型需要一个JSON数组(例如:

このエラーは、JSON 構造が予期された形式と一致しないことが原因で発生します。 JSON 配列はリストまたはコレクションを表すために使用され、JSON オブジェクトはキーと値のペアを表すために使用されます。この例では、JSON 文字列には、「data」プロパティがオブジェクトの配列である単一のオブジェクトが含まれています。この問題を解決するには、JSON 文字列を適切なクラス構造に逆シリアル化する必要があります。

JSON 構造を理解する

提供される JSON 文字列構造は次のとおりです:

<code class="language-json">{"data":[{"target_id":9503123,"target_type":"user"}]}</code>
ログイン後にコピー
これには、「data」プロパティがオブジェクトの配列である単一のオブジェクトが含まれています。

正しい逆シリアル化コード

エラーの原因となっているコード行は次のとおりです:

<code class="language-csharp">List<rootobject> datalist = JsonConvert.DeserializeObject<list>(jsonstring);</code>
ログイン後にコピー
この行は、JSON 文字列を RootObject オブジェクトのリストに逆シリアル化しようとします。ただし、JSON 文字列にはオブジェクトのリストではなく、単一のオブジェクトが含まれます。このエラーを修正するには、コードを次のように変更します:

<code class="language-csharp">RootObject datalist = JsonConvert.DeserializeObject<rootobject>(jsonstring);</code>
ログイン後にコピー
この修正されたコードは、JSON 文字列を単一の RootObject オブジェクトに逆シリアル化し、JSON 構造と正しく一致します。

結論

「現在の JSON オブジェクトを逆シリアル化できません」エラーは、コードが JSON 構造と正しく一致していることを確認することで解決できます。逆シリアル化を成功させるには、予想される JSON 文字列の形式を理解することが重要です。

以上がJSON 逆シリアル化が「現在の JSON オブジェクトを逆シリアル化できません...」というメッセージで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート