JSON 逆シリアル化エラーの処理: リスト型および非配列 JSON データ
Newtonsoft の JsonConvert を使用して JSON データを逆シリアル化する場合、開発者はよく次のエラーに遭遇します。「タイプ A の JSON 配列には、タイプ 'System.Collections.Generic.List`1[T]' が必要であるため、現在の JSON オブジェクトを型 'System.Collections.Generic.List`1[T]' に逆シリアル化できません。正しく逆シリアル化します ”
このエラーは、ターゲット データ型がリスト (エラー メッセージでは「List`1」と表示) であるが、JSON データが配列ではない場合に発生します。この問題を解決するには、予想される配列形式と一致するように JSON データを変更するか、非配列形式を受け入れるようにターゲット データ型を調整する必要があります。
JSON データ変換
JSON データが実際には配列であるにもかかわらず、この形式で表現されていない場合は、逆シリアル化する前に配列形式に変換する必要があります。この目的には、JSON.NET の JObject クラスまたは JArray クラスを使用できます。たとえば、JSON データが次の形式である場合:
<code>{"data":[{"target_id":9503123,"target_type":"user"}]}</code>
次のコードを使用して配列形式に変換できます:
<code>JObject obj = JObject.Parse(jsonstring); jsonstring = obj["data"].ToString();</code>
これにより、JSON データが次の配列形式に変換されます:
<code>[{"target_id":9503123,"target_type":"user"}]</code>
ターゲットのデータ型を調整します
JSON データが配列でない場合は、配列以外の形式を受け入れるようにターゲット データ型を調整する必要があります。この場合、List
<code>RootObject datalist = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>
以上がリスト型が配列以外の JSON データを予期している場合、JSON デシリアライゼーションが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。