Heim >Backend-Entwicklung >C++ >Wie kann ich verschachtelte JSON -Eigenschaften in Klasseneigenschaften in C#abbilden?
abbilden
Wenn Sie auf JSON -Daten mit einer geschichteten Struktur stoßen, möchten Sie möglicherweise die Sub -attributes von JSON -Komplexobjekten den einfachen Attributen in der Klasse abbilden. Obwohl das Framework von newtonsoft.json [DataMember]
die ursprünglichen JSON -Daten
JObject
Es gibt jedoch einige Möglichkeiten, diese Zuordnung zu erreichen. Eine einfache Methode besteht darin, JSON zurück zu SelectToken
zu sequenzieren und
Betrachten Sie beispielsweise die folgenden JSON -Daten:
<code class="language-json">{ "picture": { "id": 123456, "data": { "type": "jpg", "url": "http://www.someplace.com/mypicture.jpg" } } }</code>
url
Um die ProfilePicture
-attribute von sub -attributes in die Klasse zuzuordnen, können Sie den folgenden Code verwenden:
<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>
Wenn Sie eine fortgeschrittenere Lösung benötigen, können Sie JsonConverter
anpassen, um JsonProperty
wie erwartet zu aktivieren. Dieser Konverter füllt alle Attribute mit dem im Attribut angegebenen Pfad.
Betrachten Sie beispielsweise die folgenden JSON -Daten:
<code class="language-json">{ "name": "Joe Shmoe", "age": 26, "picture": { "id": 123456, "data": { "type": "jpg", "url": "http://www.someplace.com/mypicture.jpg" } }, "favorites": { "movie": { "title": "The Godfather", "starring": "Marlon Brando", "year": 1972 }, "color": "purple" } }</code>
Um JSON zu verwirklichen und die Sub -Attributes den einfachen Attributen in der Klasse zuzuordnen, können Sie den folgenden benutzerdefinierten Konverter verwenden:
<code class="language-csharp">[JsonConverter(typeof(JsonPathConverter))] class Person { [JsonProperty("name")] public string Name { get; set; } [JsonProperty("age")] public int Age { get; set; } [JsonProperty("picture.data.url")] public string ProfilePicture { get; set; } [JsonProperty("favorites.movie")] public Movie FavoriteMovie { get; set; } [JsonProperty("favorites.color")] public string FavoriteColor { get; set; } }</code>
Mit einem benutzerdefinierten Konverter können Sie den JSON wie gewohnt wie gewohnt neu kehren:
<code class="language-csharp">Person p = JsonConvert.DeserializeObject<Person>(json);</code>
Das obige ist der detaillierte Inhalt vonWie kann ich verschachtelte JSON -Eigenschaften in Klasseneigenschaften in C#abbilden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!