自定义模型转JSON 之Newtonsoft.Json.dll 、System.Runtime.Serialization.dll和System.Web.Extensions.dll


自定义模型转JSON之Newtonsoft.Json.dll 、System.Runtime.Serialization.dll和System.Web.Extensions.dll

自定义学生模型

  #region   自定义学生模型
        public enum Sex
        {
            男 = 0,
            女 = 1
        }
        [Serializable()]
        class Student
        {
            private string _name;

            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }

            private int _age;

            public int Age
            {
                get { return _age; }
                set { _age = value; }
            }

            private Sex _sex = Sex.男;

            public Sex Sex
            {
                get { return _sex; }
                set { _sex = value; }
            }
            public Student()
            { }
            public Student(string name, int age, Sex sex)
            {
                this._name = name;
                this._age = age;
                this._sex = sex;
            }
        }

        #endregion
自定义学生模型

Newtonsoft.Json.dll 

public static class JsonNewtonsoft
    {
        /// 
        /// 把对象转换为JSON字符串
        /// 
        /// 对象
        /// JSON字符串
        public static string ToJSON(this object o)
        {
            if (o == null)
            {
                return null;
            }
            return JsonConvert.SerializeObject(o);
        }
        /// 
        /// 把Json文本转为实体
        /// 
        /// 
        /// 
        /// 
        public static T FromJSON(this string input)
        {
            try
            {
                return JsonConvert.DeserializeObject(input);
            }
            catch (Exception ex)
            {
                return default(T);
            }
        }
    }
Newtonsoft.Json.dll

System.Runtime.Serialization.dll

 public static class JsonDataContractJsonSerializer
    {
        /// 
        /// 内存对象转换为json字符串
        /// 
        /// 
        /// 
        public static string ObjectToJson(object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream stream = new MemoryStream();
            serializer.WriteObject(stream, obj);
            byte[] dataBytes = new byte[stream.Length];
            stream.Position = 0;
            stream.Read(dataBytes, 0, (int)stream.Length);
            return Encoding.UTF8.GetString(dataBytes);
        }
        /// 
        /// Json字符串转内存对象
        /// 
        /// 
        /// 
        /// 
        public static object JsonToObject(string jsonString, object obj)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            return serializer.ReadObject(mStream);
        }
    }
System.Runtime.Serialization.dll

System.Web.Extensions.dll

 public static class JsonJavaScriptSerializer
    {
        /// 
        /// 内存对象转换为json字符串
        /// 
        /// 
        /// 
        public static string ToJSON(object obj)
        {
            StringBuilder sb = new StringBuilder();
            JavaScriptSerializer json = new JavaScriptSerializer();
            json.Serialize(obj, sb);
            return sb.ToString();
        }
        /// 
        /// Json字符串转内存对象
        /// 
        /// 
        /// 
        /// 
        public static T FromJSON(string jsonString)
        {
            JavaScriptSerializer json = new JavaScriptSerializer();
            return json.Deserialize(jsonString);
        }

    }
System.Web.Extensions.dll

TEST

    static void test()
        {
            Student st = new Student("笨男孩", 22, Sex.男);

            //方法一
            string jsonStr = JsonNewtonsoft.ToJSON(st);//{"Name":"笨男孩","Age":22,"Sex":0}
            Student stobj = (Student)JsonNewtonsoft.FromJSON(jsonStr);

            //方法二
            string jsonStr2 = JsonDataContractJsonSerializer.ObjectToJson(st);   
            Student stobj2 = (Student)JsonDataContractJsonSerializer.JsonToObject(jsonStr2, st);//{"_age":22,"_name":"笨男孩","_sex":0}
        
            //方法三
            string jsonStr3 = JsonJavaScriptSerializer.ToJSON(st);//{"Name":"笨男孩","Age":22,"Sex":0}
            Student stobj3 = (Student)JsonJavaScriptSerializer.FromJSON(jsonStr3);
        }
TEST