ホームページ > バックエンド開発 > C++ > JavaScriptSerializer を使用して JSON フィールド名を別の .NET プロパティ名にマップするにはどうすればよいですか?

JavaScriptSerializer を使用して JSON フィールド名を別の .NET プロパティ名にマップするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-10 08:16:40
オリジナル
664 人が閲覧しました

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

JavaScriptSerializer を使用した JSON と .NET プロパティ名の矛盾の処理

.NET の JavaScriptSerializer は、JSON フィールド名を .NET オブジェクトのプロパティにマッピングするときに調整が必要になる場合があります。 たとえば、「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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート