Loading

.NET和JSON

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();
        }

输出结果为:

image


Newtonsoft.Json提供的JSON操作方法

相比官方的转换方法,第三方提供的类库要简单很多。官方给的默认部署方式是直接打开VS的包管理器,PM > Install - Package Newtonsoft.Json就可以直接安装好。

测试类依旧,测试代码:

            string newtonSoftJson = JsonConvert.SerializeObject(p1);
            Console.WriteLine(newtonSoftJson);

输出结果为:

image

可以看出,实际结果顺序可能不同,但是转换的效果是一样的。

Newtonsoft.Json只需要调用一个方法就能完成JSON的转换,比官方的方法要简洁不少。

posted @ 2016-02-21 15:40  Richeir  阅读(364)  评论(0编辑  收藏  举报