階層化された構造で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 サイトの他の関連記事を参照してください。