Json序列化

    public class JSONHelper
    {
        public static string Serialize<T>(T obj)
        {
            var serializer = new DataContractJsonSerializer(obj.GetType());
            MemoryStream ms = new MemoryStream();
            serializer.WriteObject(ms, obj);
            string retVal = Encoding.UTF8.GetString(ms.ToArray());
            ms.Dispose();
            return retVal;
        }

        public static T Deserialize<T>(string json)
        {
            T obj = Activator.CreateInstance<T>();
            MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
            var serializer = new DataContractJsonSerializer(obj.GetType());
            obj = (T)serializer.ReadObject(ms);
            ms.Close();
            ms.Dispose();
            return obj;
        }
    }
View Code

发现如果实体类如下:

        [Serializable]
        public class User
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public string System { get; set; }
        }
View Code

生成的Json属性会带有k__BackingField;

正确的如下:摘抄自http://www.cnblogs.com/jeffwongishandsome/archive/2012/05/31/2529196.html

        [Serializable]
        public class User
        {
            private int id;

            public int ID
            {
                get { return id; }
                set { id = value; }
            }
            private string name;

            public string Name
            {
                get { return name; }
                set { name = value; }
            }
            private string system;

            public string System
            {
                get { return system; }
                set { system = value; }
            }
        }
View Code

或者

        [DataContract]
        public class User
        {
            [DataMember]
            public int ID { get; set; }
            [DataMember]
            public string Name { get; set; }
            [DataMember]
            public string System { get; set; }
        }
View Code

 但是Serializable方式转化的字段是小写的。

DataContractJsonSerializer的命名空间:System.Runtime.Serialization.Json;

posted @ 2015-07-21 17:39  江境纣州  阅读(15)  评论(0编辑  收藏  举报