Heim >Backend-Entwicklung >C++ >Wie kann ich während der Deserialisierung unterschiedlich benannte JSON-Felder C#-Eigenschaften zuordnen?

Wie kann ich während der Deserialisierung unterschiedlich benannte JSON-Felder C#-Eigenschaften zuordnen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-10 09:15:42603Durchsuche

How Can I Map Differently Named JSON Fields to C# Properties During Deserialization?

Ändern Sie den Feldnamen mit JavaScriptSerializer.Deserialize in C#

Die

-Klasse in C# bietet eine praktische Möglichkeit, JSON-Daten in C#-Objekte zu deserialisieren. Standardmäßig werden JSON-Feldnamen jedoch direkt Eigenschaftsnamen im Zielobjekt zugeordnet. Dies kann dazu führen, dass die Deserialisierung fehlschlägt, wenn der JSON-Feldname nicht mit dem Eigenschaftsnamen im C#-Objekt übereinstimmt. JavaScriptSerializer

Um dieses Problem zu lösen, gibt es zwei gängige Methoden:

1. Verwenden Sie das -Attribut XmlElement

Diese Methode beinhaltet das manuelle Festlegen der Feldnamenzuordnung mithilfe des Attributs

. Allerdings funktioniert diese Methode, wie im ursprünglichen Beitrag erwähnt, nicht mit [XmlElement]. Die Feldnamenzuordnung sollte stattdessen mithilfe des Attributs JavaScriptSerializer implementiert werden. [DataMember]

2. Verwenden Sie DataContractJsonSerializer Die im

-Namespace bereitgestellten System.Runtime.Serialization-Klassen bieten eine leistungsfähigere Lösung für die Feldnamenzuordnung. Der entsprechende JSON-Feldname kann explizit angegeben werden, indem das Attribut DataContractJsonSerializer auf die Eigenschaft eines C#-Objekts angewendet wird. [DataMember]

Zum Beispiel:

<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>
In diesem Beispiel werden die JSON-Feldnamen

und user_id den Eigenschaften detail_level bzw. UserId im C#-Objekt zugeordnet. DetailLevel

So verwenden Sie

zum Deserialisieren von JSON-Daten: DataContractJsonSerializer

<code class="language-csharp">using System.Runtime.Serialization.Json;
using System.Text;
using System.IO;

...

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject));
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonData));
DataObject dataObject = serializer.ReadObject(ms) as DataObject;</code>
Durch die Verwendung der Attribute

und DataContractJsonSerializer können Sie Feldnamen während der JSON-Deserialisierung effektiv ändern und so eine korrekte Zuordnung zwischen JSON-Daten und C#-Objekten sicherstellen. [DataMember]

Das obige ist der detaillierte Inhalt vonWie kann ich während der Deserialisierung unterschiedlich benannte JSON-Felder C#-Eigenschaften 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