ホームページ >バックエンド開発 >C++ >JavaScriptSerializer (または代替) を使用して JSON フィールド名を .NET オブジェクト プロパティにマップする方法は?

JavaScriptSerializer (または代替) を使用して JSON フィールド名を .NET オブジェクト プロパティにマップする方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-10 06:50:46120ブラウズ

How to Map JSON Field Names to .NET Object Properties using JavaScriptSerializer (or Alternatives)?

JavaScriptSerializer.Deserialize を使用する: JSON フィールド名を .NET オブジェクトのプロパティにマップします

質問:

JavaScriptSerializer.Deserialize を使用するときに、JSON データのフィールド名を .NET オブジェクトのフィールド名にマップするにはどうすればよいですか?

答え:

JavaScriptSerializer クラスは、フィールド名を直接マッピングする機能を提供しません。ただし、この目的には、より柔軟な DataContractJsonSerializer クラスを利用できます。

フィールド名をマッピングするには:

  1. DataContract 属性をデータ オブジェクト クラスに追加します:
<code>[DataContract]
public class DataObject
{
}</code>
  1. DataMember 属性を使用して、オブジェクト フィールドに対応する JSON プロパティ名を指定します:
<code>[DataMember(Name = "user_id")]
public int UserId { get; set; }

[DataMember(Name = "detail_level")]
public string DetailLevel { get; set; }</code>

例:

<code>using System.Runtime.Serialization.Json;

public class Test
{
    public static void Main()
    {
        string json = "{\"user_id\":1234, \"detail_level\":\"low\"}";

        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(DataObject));

        using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
        {
            DataObject dataObject = serializer.ReadObject(ms) as DataObject;

            Console.WriteLine(dataObject.UserId); // 输出:1234
            Console.WriteLine(dataObject.DetailLevel); // 输出:low
        }
    }
}</code>

注:

  • DetailLevel フィールドを列挙として保持したい場合は、カスタム JSON コンバーターを使用して文字列と列挙値の間の変換を処理できます。
  • DataContractJsonSerializer は、Silverlight でのフィールド名のマッピングもサポートしています。

以上がJavaScriptSerializer (または代替) を使用して JSON フィールド名を .NET オブジェクト プロパティにマップする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。