JSON データ内の混合コレクションと単一オブジェクトの処理
従来の逆シリアル化手法では、同じプロパティの配列と単一のオブジェクトを含む JSON データを逆シリアル化するときに問題が発生する可能性があります。この記事では、Facebook から返される JSON 応答がメディア データをオブジェクトとして、または配列として表す特定のシナリオについて説明します。
この問題を解決するには、カスタム JSON コンバーターを使用できます。このコンバータは、JSON.NET のデフォルトの逆シリアル化プロセスとターゲット クラスの間の仲介者として機能します。この場合、ターゲット クラスは FacebookAttachment で、これには Media という List
カスタム コンバータ FacebookMediaJsonConverter は、一貫性のないデータ形式を処理するために ReadJson メソッドをオーバーライドします。具体的には、JsonReader.TokenType をチェックし、それに応じて逆シリアル化を実行します。
<code>public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.StartArray) return serializer.Deserialize<List<facebookmedia>>(reader); else return null; }</code>
このコンバーターを使用すると、逆シリアル化プロセスは、JSON 応答内の一貫性のない形式に適応できます。ただし、この方法は JSON 構造で起こり得るすべての変更を考慮しているわけではなく、すべてのシナリオに適しているわけではないことに注意してください。
以上が同じプロパティに対して一貫性のない配列と単一オブジェクト構造を持つ JSON を逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。