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
Linda HamiltonOriginal
2025-01-10 08:16:40678Durchsuche

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:

<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!

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