ホームページ >バックエンド開発 >C++ >タイプ情報なしでjson.netで多型JSONを脱色する方法は?

タイプ情報なしでjson.netで多型JSONを脱色する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-02-02 11:51:09360ブラウズ

How to Deserialize Polymorphic JSON in Json.NET without Type Information?

json.netを使用した情報の種類なし - シーケンス化された多型jsonクラス

JSONデータに異なるタイプのオブジェクトが含まれており、明示的なタイプ情報がない場合、json.netのバックシリアル化は課題に直面します。この障害を克服するために、カスタムJSONConverterを開発することができ、特定の属性に応じて対応するクラスを即座にインスタンス化できます。

Imgur API呼び出しがリストを返す例を考えてみましょう。 $タイプの属性がないため、自動化にjson.netを使用することは不可能です。ただし、IS_ALBUMプロパティを使用することにより、これら2つのカテゴリを区別できます。

カスタムJSonConverterを実現するには、以下に示すようにクラスを定義し、GalleryItemConverterを作成します。

コンバーターのReadJSONメソッドでは、IS_ALBUMプロパティをチェックして、インスタンス化するオブジェクトのタイプを決定します。次に、Serializerを使用してJSONデータをオブジェクトに入力します。

<code class="language-csharp">public abstract class GalleryItem
{
    public string id { get; set; }
    public string title { get; set; }
    public string link { get; set; }
    public bool is_album { get; set; }
}

public class GalleryImage : GalleryItem
{
    // ...
}

public class GalleryAlbum : GalleryItem
{
    public int images_count { get; set; }
    public List<GalleryImage> images { get; set; }
}

public class GalleryItemConverter : JsonConverter
{
    // ...
}</code>
これは、このコンバーターの使用を示す例プログラムです。

出力は、GalleryAlbumオブジェクトの画像を含む、ディープラート化のオブジェクトとそれぞれの属性を表示しました。カスタムGalleryItemConverterは、さまざまなデータ構造を効果的に処理するための明示的なタイプ情報なしでシリアル化できるソリューションを提供します。

以上がタイプ情報なしでjson.netで多型JSONを脱色する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。