ホームページ > バックエンド開発 > C++ > オブジェクトをリストに変換しようとすると JSON 逆シリアル化が失敗するのはなぜですか?

オブジェクトをリストに変換しようとすると JSON 逆シリアル化が失敗するのはなぜですか?

Susan Sarandon
リリース: 2025-01-08 06:00:40
オリジナル
770 人が閲覧しました

Why Does JSON Deserialization Fail When Trying to Convert an Object to a List?

JSON 逆シリアル化の問題: オブジェクトをリストに変換できません

JSON オブジェクトをカスタム オブジェクトのリストに逆シリアル化しようとすると、開発者は「現在の JSON オブジェクト (例: {"name":"value"}) を Type 'System.Collections に逆シリアル化できません」というエラーが発生する場合があります。 .Generic.List`1[...]'"。この問題は、JSON 構造がターゲットの逆シリアル化タイプと一致しない場合に発生します。

次のコード スニペットを考えてみましょう:

<code class="language-csharp">string jsonstring = "{\"data\":[{\"target_id\":9503123,\"target_type\":\"user\"}]}";
List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);</code>
ログイン後にコピー

このシナリオでは、ターゲットの逆シリアル化タイプは List であり、RootObject オブジェクトの JSON 配列が必要です。ただし、JSON 文字列は、「data」という名前の配列に含まれる単一の RootObject オブジェクトを表します。

解決策:

この問題を解決するには、JSON 構造に合わせてターゲットの逆シリアル化タイプを調整する必要があります。

正しい逆シリアル化:

<code class="language-csharp">RootObject data = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>
ログイン後にコピー

逆シリアル化の種類を RootObject に変更すると、コードは JSON 構造と整合し、逆シリアル化プロセスは上記のエラーが発生することなく正常に完了します。 target_idtarget_type にアクセスする必要がある場合は、data オブジェクトをさらに処理する必要があります (例: data.data[0].target_id)。

以上がオブジェクトをリストに変換しようとすると JSON 逆シリアル化が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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