国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Json的序列化與反序列化以及亂入的k_BackingField

2019-11-17 02:18:00
字體:
來源:轉載
供稿:網友

Json的序列化與反序列化以及亂入的k_BackingField

今天需要使用Json數據,所以用到了Json的序列化與反序列化。首先先來說怎么序列化的:

1.序列化與反序列化

  首先添加System.Runtime.Serialization的引用

Object轉換成Json文件:

      public static string ObjectToJson(object obj)        {            DataContractJsonSerializer ser = new DataContractJsonSerializer(obj.GetType());            using (MemoryStream ms = new MemoryStream())            {                ser.WriteObject(ms, obj);                return Encoding.Default.GetString(ms.ToArray());            }        }

Json數據轉換成Object 

    public static T JsonToObject<T>(string json) where T : class        {            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));            using (MemoryStream ms = new MemoryStream(Encoding.Default.GetBytes(json)))            {                return (T)ser.ReadObject(ms);            }        }

程序比較簡單我就不多說了,剛開始實體類是這樣的:

  [Serializable]    class User    {        public int Age { get; set; }        public string Name { get; set; }        public User(string name, int age)        {            Age = age;            Name = name;        }    }

然后調用:

    static void Main(string[] args)        {            var user1 = new User("zhangsan", 18);            var users = new List<User> { user1, new User("lisi", 23 ) };            var strUser1 = ObjectToJson(user1);            var setUsers = ObjectToJson(users);        }

加入斷點,查看json數據,

居然莫名其妙出現了亂入的k__BackingField

2.亂入的k__BackingField的解決方案

  從網上找了好多資料也沒搞明白是為啥會出現這個問題。想了解的可以參考下這個。不過找到了解決方案,這里記錄下:

只需要將實體類改成如下形式:

  [DataContract]    class User    {        [DataMember]        public int Age { get; set; }        [DataMember]        public string Name { get; set; }        public User(string name, int age)        {            Age = age;            Name = name;        }    }

再監視下就不會出現k__BackingField。Json數據轉換成實體的調用也很簡單:

static void Main(string[] args)        {            var user1 = new User("zhangsan", 18);            var users = new List<User> { user1, new User("lisi", 23 ) };            var strUser1 = ObjectToJson(user1);            var strUsers = ObjectToJson(users);            var user11 = JsonToObject<User>(strUser1);            var users1 = JsonToObject<List<User>>(strUsers);        }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇信县| 襄城县| 扶余县| 武陟县| 双江| 北票市| 济宁市| 凉山| 昌吉市| 凉山| 石屏县| 安化县| 左贡县| 富民县| 蒙山县| 罗定市| 伊春市| 沧源| 郯城县| 霍州市| 新余市| 麻城市| 司法| 济阳县| 望江县| 洪江市| 阜阳市| 买车| 乌恰县| 永顺县| 广宗县| 松溪县| 砀山县| 广河县| 遂宁市| 永康市| 凌云县| 五莲县| 岱山县| 治县。| 宁阳县|