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:
DataContractJsonSerializer
im Vergleich zu JavaScriptSerializer
bessere Zuordnungsfunktionen bietet, ist es möglicherweise etwas ausführlicher.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!