日期:2014-05-18  浏览次数:20462 次

json 反序列化 为.net对象
"{ handle:'load', condtag: 0, condtxt: '', attr: '', operatestatus: 0,subofmine:{id:0,name:'ok'} }"
如何将json 反序列化为.net对象,注意关键是对象内部还有个子对象subofmine:{id:0,name:'ok'},这个处理好久都客服不了,望高人指点迷津 !

------解决方案--------------------
NewTonsoft.dll很容易就能处理你这个问题。。

你的对象里面。。再添加一个list属性。。就来装,subofmine:{id:0,name:'ok'}




------解决方案--------------------
http://archive.cnblogs.com/a/2065238/
------解决方案--------------------
如果是在.NET2.0环境用2楼说的NewTonsoft.dll可以解决
如果是以上版本,自带了json的解析库
------解决方案--------------------
subofmine:{id:0,name:'ok'}这在对象里面是一个对象属性的变量,所以你在设计这个类的时候应该这么写。

C# code

public class class1
{
 [JsonProperty("handle")]
 public string Handle{get;set;}

 [JsonProperty("condtag")]
 public int Condtag{get;set;}
 ...................
 public Subofmine subofmine{get;set}
 
}
public class Subofmine
{
 [JsonProperty("id")]
 public int Id{get;set;}

 [JsonProperty("name")]
 public string Name{get;set;}
}

------解决方案--------------------
Newtonsoft.Json.dll
JsonConvert.DeserializeObject(json, DataType);
自己写个ActionFilter
不知道新版本还有这个问题么
------解决方案--------------------
自己先定义个对应类
C# code
        /// <summary>
        /// Serialize object to string of json format
        /// </summary>
        private string JsonSerializer<T>(T t)
        {
            var ser = new DataContractJsonSerializer(typeof(T));
            var ms = new MemoryStream();
            ser.WriteObject(ms, t);
            string jsonString = Encoding.UTF8.GetString(ms.ToArray());
            ms.Close();
            return jsonString;
        }

        /// <summary>
        /// Deserialize string of json format to object
        /// </summary>
        private T JsonDeserialize<T>(string jsonString)
        {
            var ser = new DataContractJsonSerializer(typeof(T));
            var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            var obj = (T)ser.ReadObject(ms);
            return obj;
        }

------解决方案--------------------

Newtonsoft.Json.dll

网上例子也有很多。。。