Heim >Backend-Entwicklung >C++ >Wie kann ich JSON-Feldnamen mit JavaScriptSerializer verschiedenen .NET-Eigenschaftsnamen zuordnen?
Umgang mit Diskrepanzen zwischen JSON- und .NET-Eigenschaftsnamen mit JavaScriptSerializer
Das JavaScriptSerializer
in .NET erfordert manchmal Anpassungen bei der Zuordnung von JSON-Feldnamen zu Ihren .NET-Objekteigenschaften. Beispielsweise muss möglicherweise ein JSON-Feld wie „user_id“ einer .NET-Eigenschaft namens „UserId“ zugeordnet werden. Das direkte Anpassen von Feldnamen mit JavaScriptSerializer
mithilfe von Anmerkungen ist nicht möglich.
Eine überlegene Lösung: DataContractJsonSerializer
Für eine flexible Feldnamenzuordnung bietet DataContractJsonSerializer
eine robustere Lösung. Es nutzt das Attribut [DataMember]
, um die Zuordnung explizit zu definieren:
<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 stellt sicher, dass das JSON-Feld „user_id“ die Eigenschaft UserId
in Ihrem .NET-Objekt korrekt ausfüllt.
Testen des DataContractJsonSerializer
Hier ist ein Beispiel-Unit-Test, der die Funktionalität demonstriert:
<code class="language-csharp">using System.Runtime.Serialization.Json; using System.Text; using System.IO; using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class DataContractJsonSerializerTest { [TestMethod] public void DataObjectSerializationTest() { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject)); string jsonData = "{\"user_id\":1234,\"detail_level\":\"low\"}"; //Example JSON using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonData))) { DataObject dataObject = (DataObject)serializer.ReadObject(ms); Assert.IsNotNull(dataObject); Assert.AreEqual("low", dataObject.DetailLevel); Assert.AreEqual(1234, dataObject.UserId); } } }</code>
Wichtiger Hinweis zu Aufzählungen:
Wenn Sie in der JSON-Antwort Ihres Servers mit Aufzählungen arbeiten, konvertieren Sie diese vor der Deserialisierung mit DataContractJsonSerializer
in Zeichenfolgen, um potenzielle Analysefehler zu vermeiden. Die direkte Enum-Zuordnung kann problematisch sein.
Das obige ist der detaillierte Inhalt vonWie kann ich JSON-Feldnamen mit JavaScriptSerializer verschiedenen .NET-Eigenschaftsnamen zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!