C# 中使用JSON

来源:互联网 发布:淘宝查关键词排名软件 编辑:程序博客网 时间:2024/05/24 03:12

转载自http://www.cnblogs.com/vingi/articles/2578659.html

C#中使用JSON不需要使用第三方库,使用.NET Framwork3.5自带的System.Runtime.Serialization.Json即可很好的完成JSON的解析。

关于JSON的入门介绍见(首页的图很形象):

http://www.json.org/

一、Using

需要添加引用:System.ServiceModel.Web 和 System.Runtime.Serialization,然后使用Using

using System.Runtime.Serialization;using System.Runtime.Serialization.Json;


二、定义序列化的类

假如我们要转化的JSON字符串格式为:

{    "encoding":"UTF-8",    "plug-ins":["python","c++","ruby"],    "indent":{        "length":3,        "use_space":true    }}


然后编写相应的序列化的类,注意下面类加的Attribute:

[DataContract(Namespace = "json")]        class Config        {            [DataMember(Order = 0)]            public string encoding { get; set; }            [DataMember(Order = 1)]            public string[] plugins { get; set; }            [DataMember(Order = 2)]            public Indent indent { get; set; }        }        [DataContract(Namespace = "json")]        class Indent        {            [DataMember(Order = 0)]            public int length { get; set; }            [DataMember(Order = 1)]            public bool useSpace { get; set; }        }


 

三、对象转化为JSON字符串

使用WriteObject方法:

 

Config config = new Config()            {                encoding = "UTF-8",                plugins = new string[] { "python", "C++", "C#" },                indent = new Indent()                {                    length = 8,                    useSpace = false                }            };            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Config));            MemoryStream stream = new MemoryStream();            serializer.WriteObject(stream, config);            //byte[] dataBytes = new byte[stream.Length];            //stream.Position = 0;            //stream.Read(dataBytes, 0, (int)stream.Length);            //string dataString = Encoding.UTF8.GetString(dataBytes);            //注释掉的部分可以用下面这句话代替,更简单了            string dataString = Encoding.UTF8.GetString(stream.ToArray());            stream.Close();            Console.WriteLine("JSON string is:");            Console.WriteLine(dataString); 


 

四、JSON字符串转对象

使用ReadObject方法:  

MemoryStream stream2 = new MemoryStream(Encoding.UTF8.GetBytes(dataString));            DataContractJsonSerializer serializer2 = new DataContractJsonSerializer(typeof(Config));            Config config2 = serializer2.ReadObject(stream2) as Config;            stream2.Close();            Console.WriteLine("Encoding is: {0}", config2.encoding);            foreach (string plugin in config2.plugins)            {                Console.WriteLine("plugins is: {0}", plugin);            }            Console.WriteLine("indent.length is: {0}", config2.indent.length);            Console.WriteLine("indent.use_space is: {0}", config2.indent.useSpace);


五、输出结果:


 


 

原创粉丝点击