C# JSON和对象之间互相转换

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":"好事情"}]}

 

posted @ 2016-03-03 14:45  正定聚  阅读(13083)  评论(0编辑  收藏  举报