写在开头:

最近项目需求,需要在C#中处理json字符串,毫不犹豫的下载了Newtonsoft.Json 4.5.11(2012.12.17)http://json.codeplex.com/,然后百度教程,还比较多(心喜),大致方法类似如下:

[csharp] view plaincopy

  1. using Newtonsoft.Json;
  2. using System.Text;
  3. StringBuilder sb = new StringBuilder();
  4. string str = "[{ID:'1',Name:'John',Other:[{Age:'21',Sex:'0'}]},{ID:'2',Name:'Good',Other:[{Age:'36',Sex:'1'}]}]";
  5. JavaScriptArray javascript = (JavaScriptArray)JavaScriptConvert.DeserializeObject(str);
  6. for (int i = 0; i < javascript.Count; i++ )
  7. {
  8. JavaScriptObject obj = (JavaScriptObject)javascript[i];
  9. sb.Append("ID:" + obj["ID"].ToString());
  10. sb.Append("Name:" + obj["Name"].ToString());
  11. JavaScriptArray json = (JavaScriptArray)obj["Other"];
  12. for (int j = 0; j < json.Count; j++){
  13. JavaScriptObject jsonobj = (JavaScriptObject)json[j];
  14. sb.Append("Age:" + jsonobj["Age"].ToString());
  15. sb.Append("Sex:" + jsonobj["Sex"].ToString());
  16. }
  17. }

还有一种方法是:

[csharp] view plaincopy

  1. string jsonText = "[{'a':'aaa','b':'bbb','c':'ccc'},{'a':'aaa2','b':'bbb2','c':'ccc2'}]";
  2. JsonReader reader = new JsonReader(new StringReader(jsonText));
  3. while (reader.Read())
  4. {
  5. textBox1.Text += "TokenType = " + reader.TokenType + "   ValueType =  " + reader.ValueType + "   Value = " + reader.Value + "\r\n";
  6. }

第一种方法编译直接出错,根本不识别JavaScriptArray,JavaScriptObject,就连JavaScriptConvert方法也木有,靠!那好吧,第二种总行了吧,提示:

错误 2 无法创建抽象类或接口“Newtonsoft.Json.JsonReader”的实例

这是要闹哪样???

后面查看了Newtonsoft.Json库中的方法,根本没有嘛!再百度,终于有位仁兄说在新版中JavaScriptArray变成了JArray,顺着这个思路,发现变化如下:

[csharp] view plaincopy

  1. JavaScriptArray--->JArray
  2. JavaScriptConvert--->JsonConvert
  3. JavaScriptObject--->JObject

仔细看看,人家这样改更规范了嘛!

使用方法总结:

1、较简单的一种

[csharp] view plaincopy

  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. string jsonText = "[{'a':'aaa','b':'bbb','c':'ccc'},{'a':'aaa2','b':'bbb2','c':'ccc2'}]";
  4. JArray ja =(JArray) JsonConvert.DeserializeObject(jsonText);
  5. JObject o = (JObject)ja[1];
  6. Console.WriteLine(o["a"]);
  7. Console.WriteLine(ja[1]["a"]);

2、自定义对象列表

定义一个对象:

[csharp] view plaincopy

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. /// <summary>
  6. ///Customer 的摘要说明
  7. /// </summary>
  8. public class Customer
  9. {
  10. //在序列化前后没有变动
  11. public string a { get; set; }
  12. //在序列化前后设置和重置
  13. public string b { get; set; }
  14. //设置为null,但在序列化后填充
  15. public string c { get; set; }
  16. public string Other { get; set; }
  17. public Customer()
  18. {
  19. //
  20. //TODO: 在此处添加构造函数逻辑
  21. //
  22. a = "";
  23. b = "";
  24. c = "";
  25. Other = null;
  26. }
  27. }

反序列化json字符串:

[csharp] view plaincopy

  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. string jsonText = "[{'a':'aaa','b':'bbb','c':'ccc'},{'a':'aaa2','b':'bbb2','c':'ccc2'}]";
  4. List<Customer> _list = JsonConvert.DeserializeObject<List<Customer>>(jsonText);
  5. Console.WriteLine(_list[1].a);
  6. foreach (Customer c in _list)
  7. {
  8. Console.WriteLine(c.c);
  9. }

我感觉两种方法各有好处,第二种虽然需要再写一个对象,但可以像在js里面一样使用,感觉很爽!

作者:kunoy
申明:作者写博是为了总结经验,和交流学习之用。 如需转载,请尽量保留此申明,并在文章页面明显位置给出原文连接。谢谢!

Newtonsoft.Json.4.5.11使用方法总结---反序列化json字符串的更多相关文章

  1. JSON转JS对象,JS对象转JSON

    一.从服务端发来的json字符串,怎么才能作为JavaScript对象(JSON对象)在web端调用呢? 1.如果使用jQuery,就很方便了,可以在ajax一系列函数中,把参数Datatype传js ...

  2. 用Newtonsoft将json串转为对象的方法(详解)

    首先,将json串转为一个JObject对象: JObject jo = (JObject)JsonConvert.DeserializeObject(CurrentSelectedItemReq) ...

  3. 在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍

    全局引用 using Newtonsoft.Json; using Newtonsoft.Json.Converters; //把Json字符串反序列化为对象 目标对象 = JavaScriptCon ...

  4. Newtonsoft.Json.dll反序列化JSON字符串的方法

      1.直接反序列化JSON字符串 //引用序列化.反序列化JSON字符串用到的空间 using Newtonsoft.Json; using Newtonsoft.Json.Linq; //定义一个 ...

  5. .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程

    JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询 ...

  6. Newtonsoft.Json.dll 反序列化JSON字符串

    上一篇JSON博客<JSON入门级学习小结--JSON数据结构>中已对JSON做了简单介绍,JSON字符串数组数据样式大概是这样子的: 如今因为项目需求(asp.net web网站,前台向 ...

  7. PCB MS SQL 存储过程(CLR) 实现Json转DataTable表的方法

    一.准备需转为DataTable的json字符串 原json字符串数据 [{"TechName":"ECN","TechNo":" ...

  8. 记录一次关于Cookie、Json中文乱码的解决方法

    今天工作上遇到一个问题,需要把一个对象集合List<Model>存入一个Cookie,按照原来都封装方法存入都ok,但是到取值都时候中文会变成乱码. 首先,我们可以确认Json和Cooki ...

  9. jQuery中的$.extend方法来扩展JSON对象及合并,方便调用对象方法

    $.extend方法可以扩展JSON对象,用一个或多个其他对象来扩展一个对象,返回被扩展的对象. 例一 合并 settings 和 options,修改并返回 settings var setting ...

随机推荐

  1. CentOS7安装Pycharm后无法使用日常的快捷键

    1.在百度查了一圈,原来是vim在搞鬼 楼主在安装的时候,有另外添加了vim插件,所以ctrl +c之类的键都用不了,而且每次写py文件前都要先按insert键,真坑! 2.卸载pycharm里面的v ...

  2. 四十八 常用内建模块 HTMLParser

    如果我们要编写一个搜索引擎,第一步是用爬虫把目标网站的页面抓下来,第二步就是解析该HTML页面,看看里面的内容到底是新闻.图片还是视频. 假设第一步已经完成了,第二步应该如何解析HTML呢? HTML ...

  3. centos7 mariaDB安装

    参考:http://www.linuxidc.com/Linux/2016-03/128880.htm

  4. Nginx错误:nginx: [error] OpenEvent("Global\ngx_reload_6252") failed (2: The system cannot find the file specified)

    执行nginx -s reload命令: nginx: [error] OpenEvent("Global\ngx_reload_6252") failed (2: The sys ...

  5. Mongo Connector for BI

    官网地址:https://www.mongodb.com/products/bi-connector 它目前包含两个组件: mongosqld:mongosqld接受来自SQL客户端的传入请求,并将这 ...

  6. 二:Ionic Framework支持Android开发

    首先安装ionic,在使用npm下载ionic和cordova的过程中有问题可以使用淘宝的npm镜像,具体的方法可以参考网络 npm install -g ionic cordova 其他还需要安装J ...

  7. centos 7 mini版中安装Python3.x

    首先了解几句Linux命令是必须的.例如 ls, vi, wget, rm, mv, cd, su, sudo, chmod, tar等等一些常用的语句命令是有必要知道它的用法的. 安装Python3 ...

  8. python中浅拷贝和深度拷贝的区别

    在很多面试题中都会问到浅拷贝跟深度拷贝的区别,前几天一个朋友也问到了我浅拷贝跟深度拷贝到底有什么区别,这里就简单举栗子讲一下两者的区别. 浅拷贝(copy()):拷贝父对象,不会拷贝对象的内部的子对象 ...

  9. Java实现下载BLOB字段中的文件

    概述 web项目的文件下载实现:servlet接收请求,spring工具类访问数据库及简化大字段内容获取. 虽然文章的demo中是以sevlet为平台,想必在spring mvc中也有参考意义. 核心 ...

  10. 安装zabbix监控系统

    环境 操作系统 最小化安装CentOS Linux release 7.2.1511 IP 192.168.88.1 zabbix版本 zabbix-3.4.4.tar.gz zabbix依赖于LNM ...