C#处理Json数据/Json数据转为对象
2014-03-27 15:21
423 查看
From:http://www.cnblogs.com/Gun-N-Rose/archive/2012/09/28/2707053.html
下面我将通过如何用c#的DataContractSerializer将这条记录反序列化。
首先你得分析这条记录的结构,然后建出与结构相符的类出来。记得加上reference:
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
建出来之后,要在类定义前加上[DataContract],类里的成员前加[DataMember]
按理说,上面这样的话就算建好了,我本来也是这样认为的,但是总是得不到结果,网上也查不到为什么。最后,终于从一个写过这个的同学那里得知,原来DataContractSerializer并不能主动将json数据中得各项对应到你建的类中,还需要写清是哪一个。
所以上面对应到那条json的记录,应该这样写:
好了,如果你已经建好了你的实体类,下面如何将Json的数据反序列化?
调用:
好了,如果没错的话,上面的那条json的记录已经转化成你可以直接用的Record的。
下面我将通过如何用c#的DataContractSerializer将这条记录反序列化。
首先你得分析这条记录的结构,然后建出与结构相符的类出来。记得加上reference:
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
建出来之后,要在类定义前加上[DataContract],类里的成员前加[DataMember]
[DataContract] public class Thumbnail { [DataMember] public int Width { get; set; } [DataMember] public int Height { get; set; } [DataMember] public int FileSize { get; set; } } [DataContract] public class Record { [DataMember] public int Width { get; set; } [DataMember] public int Height { get; set; } [DataMember] public int FileSize { get; set; } [DataMember] public Thumbnail thumbnail{get;set;} }
按理说,上面这样的话就算建好了,我本来也是这样认为的,但是总是得不到结果,网上也查不到为什么。最后,终于从一个写过这个的同学那里得知,原来DataContractSerializer并不能主动将json数据中得各项对应到你建的类中,还需要写清是哪一个。
所以上面对应到那条json的记录,应该这样写:
[DataContract] public class Thumbnail { [DataMember(Name = "Width")] public int Width { get; set; } [DataMember(Name = "Height")] public int Height { get; set; } [DataMember(Name = "FileSize")] public int FileSize { get; set; } } [DataContract] public class Record { [DataMember(Name = "Width")] public int Width { get; set; } [DataMember(Name = "Height")] public int Height { get; set; } [DataMember(Name = "FileSize")] public int FileSize { get; set; } [DataMember(Name = "Thumbnail")] public Thumbnail thumbnail{get;set;} }
好了,如果你已经建好了你的实体类,下面如何将Json的数据反序列化?
public static T parse<T>(string jsonString) { DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); ms.Position = 0; T jsonObject = (T)ser.ReadObject(ms); return jsonObject; }
调用:
Record record=parse<Record>(jsontext);
好了,如果没错的话,上面的那条json的记录已经转化成你可以直接用的Record的。
相关文章推荐
- C#处理微信json(将JSON转换为对象)
- JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现
- C#处理JSON 数据
- 【第21篇】通过Gson去把字符串转成json,对象转成Json,数组转换成Json处理Json数据
- c#中将【对象转成 JSON 格式的字符串】 及获取Json格式字符串并将转成Json对象 及对js数组取数据
- C#后台处理JSON数据
- java对象、List转为json格式的数据
- IOS中处理解析数据用JSON上传的对象和可以是JSON
- Json数据转化为数据对象的js处理
- 聚合对象根据模板数据转为JSON数据方案
- 将json数据映射成对象的处理办法
- ExtJs中grid的dataIndex为传回Json数据的一个对象的一个属性时处理方式
- 我们常常会从网络获取数据,而数据通常又为JSON格式,JSON数据转为Model对象
- c#处理3种json数据的实例
- 将后台数据(C#)转换成JSON字符串传到页面转换成json对象存储在JS中
- c# 对json数据的处理
- 通过FastJson把字符串转换成JSON和Map和List对象处理json数据
- c#处理3种json数据的实例
- 最简单的c#处理程序输出json格式数据
- C# List<T>转为Json数据