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);
五、输出结果:
- C# 中使用JSON
- C#中使用JSON
- C# 中使用JSON
- C#中使用JSON
- c#中使用json
- C# 中使用JSON - DataContractJsonSerializer
- C# 中使用JSON - DataContractJsonSerializer
- 在C#中使用Json
- C# 中使用JSON - DataContractJsonSerializer
- C# 中使用JSON -DataContractJsonSerializer
- C# 中使用JSON - DataContractJsonSerializer
- u3d中使用c#解析json
- C#中Newtonsoft.Json(Json.NET)的使用
- C#学习笔记-C#中Json.Net(newtonjs)的使用
- c#使用json
- 使用MSScriptControl 在 C# 中读取json数据
- c#操作json数据使用newtonsoft.json
- c#操作json使用newtonsoft.json
- c语言sprintf用法浅谈
- 错误 java.lang.IllegalArgumentException: parameter must be a descendant of this view 的解决方案
- JDBC与Hibernate读取性能分析
- TCP三次握手/四次挥手
- c++ 的三种内存管理
- C# 中使用JSON
- Qt系统对话框中文化及应用程序实现重启及使用QSS样式表文件及使用程序启动界面
- Iphone开发问题
- SWT/Jface 图片倒影效果
- C/C++文件中函数互相调用
- ThinkPHP 入门篇
- Opengl ES2.0之mipmap纹理技术小结
- ajax实现无刷新分页
- Activiti Modeler学习资料