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
解決策:
この問題を解決するには、JSON 構造に合わせてターゲットの逆シリアル化タイプを調整する必要があります。
正しい逆シリアル化:
<code class="language-csharp">RootObject data = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>
逆シリアル化の種類を RootObject に変更すると、コードは JSON 構造と整合し、逆シリアル化プロセスは上記のエラーが発生することなく正常に完了します。 target_id
と target_type
にアクセスする必要がある場合は、data
オブジェクトをさらに処理する必要があります (例: data.data[0].target_id
)。
以上がオブジェクトをリストに変換しようとすると JSON 逆シリアル化が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。