C#JSONとオブジェクト間の変換
12401 ワード
1.まず宣言ユーザ情報オブジェクト,DataContract修飾クラスはJSON,DataMember修飾属性,Orderは解析の順序,またLoverは配列リスト,ガールフレンド個数を表す
Address ,DailyRecord
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; namespace FunctionTest.Model { [DataContract] public class UserInfo { [DataMember(Order =0)] public string UserName { get; set; } [DataMember(Order = 1)] public int Age { get; set; } [DataMember(Order = 2)] public int Gender { get; set; } [DataMember(Order =3)] public List<string> Lover { get; set; } [DataMember(Order = 4)] public ContactAddress Address { get; set; } [DataMember(Order = 5)] public Dictionary<string, string> DailyRecord { get; set; } } [DataContract] public class ContactAddress { [DataMember(Order =0)] public string Province { get; set; } [DataMember(Order = 1)] public string City { get; set; } [DataMember(Order = 2)] public string Country { get; set; } [DataMember(Order = 3)] public string Details { get; set; } } }
2.JSONヘルプクラスコアコード/// <summary> /// Json /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jsonText"></param> /// <returns></returns> public static T JsonToObject<T>(string jsonText) { DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText)); T obj = (T)s.ReadObject(ms); ms.Dispose(); return obj; } /// <summary> /// JSON /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static string ObjectToJSON<T>(T obj) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); string result = string.Empty; using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, obj); ms.Position = 0; using (StreamReader read = new StreamReader(ms)) { result = read.ReadToEnd(); } } return result; }
3.呼び出し
//1. -->JSON UserInfo info = new UserInfo { Age = 10, Gender = 1, UserName = " ", Lover = new List<string> { " 1", " 2", " 3" }, Address = new ContactAddress { Province = " ", City = " ", Country = " ", Details = " " }, DailyRecord = new Dictionary<string, string> { { " ", " " }, { " ", " " }, { " ", " " } } }; string json = ObjectToJSON<UserInfo>(info);
4.逆シーケンス化された結果{"UserName":" ","Age":10,"Gender":1,"Lover":[" 1"," 2"," 3"],"Address":{"Province":" ","City":" ","Country":" ","Details":" "},"DailyRecord":[{"Key":" ","Value":" "},{"Key":" ","Value":" "},{"Key":" ","Value":" "}]}