Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串
来源:互联网 发布:知乎 高中 书包 编辑:程序博客网 时间:2024/04/28 11:24
写在开头:
最近项目需求,需要在C#中处理json字符串,毫不犹豫的下载了Newtonsoft.Json 4.5.11(2012.12.17)http://json.codeplex.com/,然后百度教程,还比较多(心喜),大致方法类似如下:
using Newtonsoft.Json; using System.Text; StringBuilder sb = new StringBuilder(); string str = "[{ID:'1',Name:'John',Other:[{Age:'21',Sex:'0'}]},{ID:'2',Name:'Good',Other:[{Age:'36',Sex:'1'}]}]"; JavaScriptArray javascript = (JavaScriptArray)JavaScriptConvert.DeserializeObject(str); for (int i = 0; i < javascript.Count; i++ ) { JavaScriptObject obj = (JavaScriptObject)javascript[i]; sb.Append("ID:" + obj["ID"].ToString()); sb.Append("Name:" + obj["Name"].ToString()); JavaScriptArray json = (JavaScriptArray)obj["Other"]; for (int j = 0; j < json.Count; j++){ JavaScriptObject jsonobj = (JavaScriptObject)json[j]; sb.Append("Age:" + jsonobj["Age"].ToString()); sb.Append("Sex:" + jsonobj["Sex"].ToString()); } }
还有一种方法是:
string jsonText = "[{'a':'aaa','b':'bbb','c':'ccc'},{'a':'aaa2','b':'bbb2','c':'ccc2'}]";JsonReader reader = new JsonReader(new StringReader(jsonText)); while (reader.Read()) { textBox1.Text += "TokenType = " + reader.TokenType + " ValueType = " + reader.ValueType + " Value = " + reader.Value + "\r\n"; }
第一种方法编译直接出错,根本不识别JavaScriptArray,JavaScriptObject,就连JavaScriptConvert方法也木有,靠!那好吧,第二种总行了吧,提示:
错误 2 无法创建抽象类或接口“Newtonsoft.Json.JsonReader”的实例
这是要闹哪样???
后面查看了Newtonsoft.Json库中的方法,根本没有嘛!再百度,终于有位仁兄说在新版中JavaScriptArray变成了JArray,顺着这个思路,发现变化如下:
JavaScriptArray--->JArrayJavaScriptConvert--->JsonConvertJavaScriptObject--->JObject
仔细看看,人家这样改更规范了嘛!
使用方法总结:
1、较简单的一种
using Newtonsoft.Json;using Newtonsoft.Json.Linq; string jsonText = "[{'a':'aaa','b':'bbb','c':'ccc'},{'a':'aaa2','b':'bbb2','c':'ccc2'}]"; JArray ja =(JArray) JsonConvert.DeserializeObject(jsonText); JObject o = (JObject)ja[1]; Console.WriteLine(o["a"]); Console.WriteLine(ja[1]["a"]);
2、自定义对象列表
定义一个对象:
using System;using System.Collections.Generic;using System.Linq;using System.Web;/// <summary>///Customer 的摘要说明/// </summary>public class Customer{ //在序列化前后没有变动 public string a { get; set; } //在序列化前后设置和重置 public string b { get; set; } //设置为null,但在序列化后填充 public string c { get; set; } public string Other { get; set; }public Customer(){////TODO: 在此处添加构造函数逻辑// a = ""; b = ""; c = ""; Other = null;}}
反序列化json字符串:
using Newtonsoft.Json;using Newtonsoft.Json.Linq; string jsonText = "[{'a':'aaa','b':'bbb','c':'ccc'},{'a':'aaa2','b':'bbb2','c':'ccc2'}]"; List<Customer> _list = JsonConvert.DeserializeObject<List<Customer>>(jsonText); Console.WriteLine(_list[1].a); foreach (Customer c in _list) { Console.WriteLine(c.c); }
我感觉两种方法各有好处,第二种虽然需要再写一个对象,但可以像在js里面一样使用,感觉很爽!
作者:kunoy
出处:http://blog.csdn.net/kunoy
申明:作者写博是为了总结经验,和交流学习之用。
如需转载,请尽量保留此申明,并在文章页面明显位置给出原文连接。谢谢!
如需转载,请尽量保留此申明,并在文章页面明显位置给出原文连接。谢谢!
- Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串
- Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串
- Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串
- Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串
- Newtonsoft.Json.dll 反序列化JSON字符串
- Newtonsoft.Json.dll 反序列化JSON字符串 .
- Newtonsoft.Json反序列化 转成Json字符串
- Newtonsoft.Json 反序列化JSON数组
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- Newtonsoft.Json序列化和反序列
- SiteMesh笔记
- iPhone开发【八】多视图技术总结之一:ModalView(模态视图)
- 小弟的第一篇博文
- OpenMP的执行模式
- SQL连接,Oracle关联加号(+)等相关知识
- Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串
- iPhone开发【九】多视图技术总结之二:Tab Bar
- 关于Android中的uses-permission和uses-feature
- Setup lamp server
- Windows8:按钮
- iPhone开发【十】多视图技术总结之三:Navigation
- 实施DHCP服务增加网络引导扩展服务(+PXE启动+网络HTTP安装操作系统)
- IE地址栏中传递中文将会导致乱码. String.IndexOf方法小记
- 收入分配改革应是民富