質問:
JavaScriptSerializer.Deserialize を使用するときに、JSON データのフィールド名を .NET オブジェクトのフィールド名にマップするにはどうすればよいですか?
答え:
JavaScriptSerializer クラスは、フィールド名を直接マッピングする機能を提供しません。ただし、この目的には、より柔軟な DataContractJsonSerializer クラスを利用できます。
フィールド名をマッピングするには:
<code>[DataContract] public class DataObject { }</code>
<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>
注:
以上がJavaScriptSerializer (または代替) を使用して JSON フィールド名を .NET オブジェクト プロパティにマップする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。