ホームページ > バックエンド開発 > C++ > ネストされたJSONプロパティをC#のクラスプロパティにマッピングする方法は?

ネストされたJSONプロパティをC#のクラスプロパティにマッピングする方法は?

Barbara Streisand
リリース: 2025-01-24 23:06:10
オリジナル
442 人が閲覧しました

How to Map Nested JSON Properties to Class Properties in C#?

JSONオブジェクトのサブアトリビュートをクラス属性にマップする

階層化された構造でJSONデータに遭遇した場合、JSON複合オブジェクトのサブアトリビュートをクラスの単純な属性にマッピングすることができます。 Newtonsoft.json Frameworkは、元のJSONデータをマッピングするための

属性を提供しますが、マッピング属性をサポートしていません。

ただし、このマッピングを達成する方法はいくつかあります。簡単な方法は、jsonを[DataMember]にシーケンスし、

を使用して必要なサブアトリビュートを取得することです。

たとえば、JObject次のJSONデータを検討してください:SelectToken

属性をクラスにマッピングするには、次のコードを使用できます。

より高度なソリューションが必要な場合は、

をカスタマイズして、
<code class="language-json">{
    "picture": {
        "id": 123456,
        "data": {
            "type": "jpg",
            "url": "http://www.someplace.com/mypicture.jpg"
        }
    }
}</code>
ログイン後にコピー
属性が期待どおりに機能するようにすることができます。このコンバーターは、すべての属性を属性で指定したパスで埋めます。

たとえば、url次のJSONデータを検討してください:ProfilePicture

<code class="language-csharp">string json = @"
{
    ""picture"": 
    {
        ""id"": 123456,
        ""data"": 
        {
            ""type"": ""jpg"",
            ""url"": ""http://www.someplace.com/mypicture.jpg""
        }
    }
}";

JObject jo = JObject.Parse(json);
Person p = jo.ToObject<Person>();
p.ProfilePicture = (string)jo.SelectToken("picture.data.url");</code>
ログイン後にコピー
jsonを捨てて、サブアトリブをクラスの単純な属性にマッピングするには、次のカスタムコンバーターを使用できます。

JsonConverterカスタムコンバーターを使用すると、通常どおりJSONを再び繰り返すことができます:JsonProperty

以上がネストされたJSONプロパティをC#のクラスプロパティにマッピングする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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