首頁 > 後端開發 > C++ > 如何使用 JavaScriptSerializer 將 JSON 欄位名稱對應到不同的 .NET 屬性名稱?

如何使用 JavaScriptSerializer 將 JSON 欄位名稱對應到不同的 .NET 屬性名稱?

Linda Hamilton
發布: 2025-01-10 08:16:40
原創
663 人瀏覽過

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

使用 JavaScriptSerializer 處理 JSON 和 .NET 屬性名稱之間的差異

將 JSON 欄位名稱對應到 .NET 物件屬性時,.NET 中的 JavaScriptSerializer 有時需要調整。 例如,像「user_id」這樣的 JSON 欄位可能需要對應到名為「UserId」的 .NET 屬性。 使用註解直接使用 JavaScriptSerializer 自訂欄位名稱是不可行的。

卓越的解決方案:DataContractJsonSerializer

對於靈活的欄位名稱映射,DataContractJsonSerializer提供了更強大的解決方案。 它利用 [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>
登入後複製

此程式碼可確保 JSON“user_id”欄位正確填入 .NET 物件中的 UserId 屬性。

測試 DataContractJsonSerializer

這是示範功能的範例單元測試:

<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>
登入後複製

關於枚舉的重要說明:

處理伺服器 JSON 回應中的枚舉時,請在使用 DataContractJsonSerializer 反序列化之前將它們轉換為字串,以防止潛在的解析錯誤。 直接枚舉映射可能會出現問題。

以上是如何使用 JavaScriptSerializer 將 JSON 欄位名稱對應到不同的 .NET 屬性名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板