JSON(JavaScript Object Notation)已经成为了现在大多数程序间数据交换的存储格式,在很多地方取代了XML文件的位置。JSON实际就是JavaScript的对象数组。
.NET操作JSON的方法,基本上可以分为两种:官方和第三方。官方直到.NET Framework 3.5才对JSON有支持,如果想在之前的.NET Framework版本中使用JSON的话,那就必须借助于第三方类库,如Newtonsoft(http://www.newtonsoft.com/json)。
.NET Framework 3.5提供的JSON操作方法
在项目中添加引用:System.ServiceModel.Web 和 System.Runtime.Serialization。
我们测试用到的类如下([]里面的属性是必须加的):
[DataContract]
class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
测试代码:
static void Main(string[] args)
{
Person p1 = new Person() { Name = "Richeir", Age = 25 };
using (MemoryStream stream1 = new MemoryStream())
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
ser.WriteObject(stream1, p1);
string convertResult = Encoding.UTF8.GetString(stream1.ToArray());
Console.WriteLine(convertResult);
}
Console.ReadKey();
}
输出结果为:
Newtonsoft.Json提供的JSON操作方法
相比官方的转换方法,第三方提供的类库要简单很多。官方给的默认部署方式是直接打开VS的包管理器,PM > Install - Package Newtonsoft.Json就可以直接安装好。
测试类依旧,测试代码:
string newtonSoftJson = JsonConvert.SerializeObject(p1);
Console.WriteLine(newtonSoftJson);
输出结果为:
可以看出,实际结果顺序可能不同,但是转换的效果是一样的。
Newtonsoft.Json只需要调用一个方法就能完成JSON的转换,比官方的方法要简洁不少。