Heim >Backend-Entwicklung >C++ >Kann ich Kinder -JSON -Eigenschaften unter Verwendung von Attributen auf Klasseneigenschaften zuordnen?

Kann ich Kinder -JSON -Eigenschaften unter Verwendung von Attributen auf Klasseneigenschaften zuordnen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-24 23:02:14333Durchsuche

Can I Map Child JSON Properties to Class Properties Using Attributes?

Verwenden Sie das Attribut, um auf die Sub -attributes in JSON zuzugreifen?

von newtonsoft.json ermöglicht DeserializeObject<T>, die ursprünglichen JSON -Daten dem Klassenattribut zuzuordnen. Was soll ich tun, wenn Sie jedoch die Sub -Attributes komplexer JSON -Objekte auf die einfachen Attribute der Klasse zuordnen möchten, was soll ich tun? [DataMember(Name = "raw_property_name")]

Betrachten Sie zum Beispiel den folgenden JSON:

<code class="language-json">{
    "picture": 
    {
        "id": 123456,
        "data": 
        {
            "type": "jpg",
            "url": "http://www.someplace.com/mypicture.jpg"
        }
    }
}</code>
Sie sind möglicherweise nur an

Attributen des -Objekts interessiert, sodass Sie in der Klasse keine komplexen Objekte erstellen möchten. Kannst du es einfach so reflektieren? picture url

Verwenden Sie Jobject, um eine direkte Pfadzuordnung
<code class="language-csharp">[DataMember(Name = "picture.data.url")]
public string ProfilePicture { get; set; }</code>

durchzuführen Eine einfache Methode besteht darin, JSON als zu analysieren. Verwenden Sie dann

, um Ihre Klasse aus

zu füllen. Um zusätzliche Attribute zu extrahieren, verwenden Sie bitte JObject: ToObject() JObject SelectToken() angepasste JsonConverr

<code class="language-csharp">string json = @"
{
    ""name"" : ""Joe Shmoe"",
    ""age"" : 26,
    ""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>

oder Sie können ein benutzerdefiniertes erstellen, um das Attribut zu aktivieren, um das Attribut entsprechend Ihren Anforderungen zu mapporieren:

JsonConverter Die Verwendungsmethode lautet wie folgt: JsonProperty

<code class="language-csharp">class JsonPathConverter : JsonConverter
{
    // ... 实现代码在问题答案中提供 ...
}</code>
Ermöglicht Ihnen das Attribut -basierte Zuordnung für Sub -Attributes, um eine größere Flexibilität bei der Serialisierung von JSON -Daten in Klassenobjekte zu bieten.

Das obige ist der detaillierte Inhalt vonKann ich Kinder -JSON -Eigenschaften unter Verwendung von Attributen auf Klasseneigenschaften zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn