当前位置: 代码迷 >> ASP.NET >> json 反序列化 为.net对象,该如何处理
  详细解决方案

json 反序列化 为.net对象,该如何处理

热度:2664   发布时间:2013-02-25 00:00:00.0
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

网上例子也有很多。。。
  相关解决方案