Heim >Backend-Entwicklung >C++ >Wie kann ich während der Deserialisierung unterschiedlich benannte JSON-Felder C#-Eigenschaften zuordnen?
Ändern Sie den Feldnamen mit JavaScriptSerializer.Deserialize
in C#
-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
1. Verwenden Sie das -Attribut XmlElement
. 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]
<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
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!