Heim > Backend-Entwicklung > C++ > Wie kann ich JSON-Feldnamen mit JavaScriptSerializer verschiedenen .NET-Eigenschaftsnamen zuordnen?

Wie kann ich JSON-Feldnamen mit JavaScriptSerializer verschiedenen .NET-Eigenschaftsnamen zuordnen?

Linda Hamilton
Freigeben: 2025-01-10 08:16:40
Original
732 Leute haben es durchsucht

How Can I Map JSON Field Names to Different .NET Property Names Using JavaScriptSerializer?

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:

[DataContract]
public class DataObject
{
    [DataMember(Name = "user_id")]
    public int UserId { get; set; }

    [DataMember(Name = "detail_level")]
    public string DetailLevel { get; set; }
}
Nach dem Login kopieren

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:

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);
        }
    }
}
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage