Heim >Backend-Entwicklung >C++ >Wie ordne ich JSON-Feldnamen .NET-Objekteigenschaften mithilfe von JavaScriptSerializer oder DataContractJsonSerializer zu?

Wie ordne ich JSON-Feldnamen .NET-Objekteigenschaften mithilfe von JavaScriptSerializer oder DataContractJsonSerializer zu?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-10 09:04:42610Durchsuche

How to Map JSON Field Names to .NET Object Properties Using JavaScriptSerializer or DataContractJsonSerializer?

JSON-Feldnamen zu .NET-Objekteigenschaften zuordnen

Das Parsen von JSON-Daten in .NET-Objekte erfordert häufig die Zuordnung von JSON-Feldnamen zu entsprechenden Objekteigenschaften. Dies ist von entscheidender Bedeutung, wenn sich JSON-Feldnamen von .NET-Eigenschaftsnamen unterscheiden. Obwohl JavaScriptSerializer.Deserialize praktisch erscheinen mag, werden Namenskonflikte nicht immer zuverlässig behandelt. Eine robustere Lösung verwendet DataContractJsonSerializer.

Verwendung von DataContractJsonSerializer für zuverlässige Zuordnung

DataContractJsonSerializer bietet eine präzise Kontrolle über die Feldnamenzuordnung über das Attribut DataMember. So geht's:

<code class="language-csharp">[DataContract]
public class DataObject
{
    [DataMember(Name = "user_id")]
    public int UserId { get; set; }

    [DataMember(Name = "detail_level")]
    public string DetailLevel { get; set; }
}</code>

Dieser Code definiert eine DataObject-Klasse. Das DataMember-Attribut ordnet die JSON-Felder „user_id“ und „detail_level“ explizit den .NET-Eigenschaften UserId bzw. DetailLevel zu.

Deserialisierung ist dann unkompliziert:

<code class="language-csharp">DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject));
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonData));
DataObject dataObject = serializer.ReadObject(ms) as DataObject;</code>

Dieses Code-Snippet deserialisiert die JSON-Daten (JsonData) in eine DataObject Instanz.

Überlegungen:

  • Obwohl DataContractJsonSerializer im Vergleich zu JavaScriptSerializer bessere Zuordnungsfunktionen bietet, ist es möglicherweise etwas ausführlicher.
  • Für DetailLevel-Eigenschaften, die als Aufzählungen definiert sind, kann ein benutzerdefiniertes DataContractResolver die Wertezuordnung erleichtern.
  • DataContractJsonSerializer ist auch mit Silverlight kompatibel.

Das obige ist der detaillierte Inhalt vonWie ordne ich JSON-Feldnamen .NET-Objekteigenschaften mithilfe von JavaScriptSerializer oder DataContractJsonSerializer zu?. 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