(完整代码在文末,引用库文件后可直接运行~)

需求:

假设有如下json字符串:

{

"companyID": "15",

"employees": [

{

"firstName": "Bill",

"lastName": "Gates"

},

{

"firstName": "George",

"lastName": "Bush"

}

],

"manager": [

{

"salary": "6000",

"age": "23"

},

{

"salary": "8000",

"age": "26"

}

]

}

请利用C#处理这个字符串,在控制台显示出公司的ID,第一位员工的姓,和所有管理者的工资。

解决步骤:

(为了更清晰的说明,本例在控制台中测试,本人编程环境VS2015)

1、下载开源的类库Newtonsoft.Json(下载地址 http://json.codeplex.com/ )。

// 20190105更新,之前这个网站是直接一个大按钮下载dll的,好像现在变复杂了2333,也可以去里面的github-release链接里,下载最新压缩包json-xxx.zip,解压找到自己对应的.net版本的Newtonsoft.Json.dll

2、在VS中新建项目——控制台应用程序。

3、引用类库:在VS中点击:项目——引用——浏览——找到你刚才下载的Newtonsoft.Json.dll——确定。

4、在主程序Program.cs的开头添加 using Newtonsoft.Json;  这一语句。

5、把要处理的json字符串复制到 http://json2csharp.chahuo.com/  得到C#类,如图所示:

把这部分内容复制,粘贴到class Program类的下方。

6、为了方便演示,把我给的json字符串赋值给一个变量。但是json中有很多的引号,赋值给一个string变量还要加上很多的反斜杠。这里再给大家一个在线工具:http://tool.chinaz.com/tools/jsonescape.aspx

将我刚才给的东西复制进去点击“压缩并转义”,得到的值可以直接赋值给一个string变量,如图:

PS:如果能从别的地方比如webAPI得到json字符串那更好,直接赋值给一个string变量后进行下面的操作,省去了转义这一步。

string jsonText = " {\"companyID\":\"15\",\"employees\":[{\"firstName\":\"Bill\",\"lastName\":\"Gates\"},{\"firstName\":\"George\",\"lastName\":\"Bush\"}],\"manager\":[{\"salary\":\"6000\",\"age\":\"23\"},{\"salary\":\"8000\",\"age\":\"26\"}]} ";

7、反序列化json字符串得到对象。

RootObject rb = JsonConvert.DeserializeObject(jsonText);

8、处理对象,如输出公司ID:

Console.WriteLine(rb.companyID);

完整代码如下(引用NewtonSoft.Json.dll后可直接运行):

using Newtonsoft.Json;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleJsonTest

{

class Program

{

static void Main(string[] args)

{

string jsonText = " {\"companyID\":\"15\",\"employees\":[{\"firstName\":\"Bill\",\"lastName\":\"Gates\"},{\"firstName\":\"George\",\"lastName\":\"Bush\"}],\"manager\":[{\"salary\":\"6000\",\"age\":\"23\"},{\"salary\":\"8000\",\"age\":\"26\"}]} ";

Console.WriteLine(jsonText);

RootObject rb = JsonConvert.DeserializeObject(jsonText);

Console.WriteLine(rb.companyID);

Console.WriteLine(rb.employees[0].firstName);

foreach (Manager ep in rb.manager)

{

Console.WriteLine(ep.age);

}

Console.ReadKey();

}

}

public class Employees

{

public string firstName { get; set; }

public string lastName { get; set; }

}

public class Manager

{

public string salary { get; set; }

public string age { get; set; }

}

public class RootObject

{

public string companyID { get; set; }

public List employees { get; set; }

public List manager { get; set; }

}

}

输出结果:

说明:对于json字符串中的数组,如本例中的employees或者manager,用这篇文章里的在线工具会自动生成泛型列表List。关于泛型列表的有关内容在这篇文章里就不再赘述了,大家可以直接把它当成数组使用。遍历数组的方法在此依然适用,例如代码中的:

foreach (Manager ep in rb.manager)

{

Console.WriteLine(ep.age);

}

广告:女票的全网最简单方法在这:http://blog.csdn.net/weixin_39874268/article/details/77302255

虽然我觉得她讲的不是很清楚但是我不能这么说...她依然是全网最简单的方法!嗯!

————————————————————————————————————————

20190105更新:没想到一年多前随手写的文章看得人这么多,好像还秀了网友们一脸,在此深表歉意HHH

看到有的人问如何把对象转换成json,我这边就补充一下吧,其实同样也是用这个库自带的方法,代码如下:

(直接加在Console.ReadKey()上面就可以运行了)

Employees e1 = new Employees();

e1.firstName = "Ma";

e1.lastName = "Yun";

Manager m1 = new Manager();

m1.salary = "6666";

m1.age = "30";

RootObject robj = new RootObject();

robj.employees = new List();

robj.manager = new List();

robj.companyID = "ALI BABA";

robj.employees.Add(e1);

robj.manager.Add(m1);

string str = JsonConvert.SerializeObject(robj);

Console.WriteLine(str);

就是调用库里面的SerializeObject方法,传入赋值好的对象就好了

最后程序输出json字符串:

{"companyID":"ALI BABA","employees":[{"firstName":"Ma","lastName":"Yun"}],"manager":[{"salary":"6666","age":"30"}]}

c#解析json字符串数组_c#解析json字符串处理(最清晰易懂的方法)相关推荐

  1. c#解析json字符串数组_C#解析JSON字符串总结

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  2. C++接收字符串数组_C语言处理字符串的7个函数

    C库提供了多个处理字符串的函数,ANSI-C把这些函数的原型放在string.h头文件中.其中最常用的函数有strlen().strcat().strcmp().strncmp().strcpy()和 ...

  3. c#解析json字符串处理清晰易懂的方法

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  4. java字符串数组转json_java中字符串String格式转化成json格式

    java字符串数组转json_java中字符串String格式转化成json格式 String s= Connection.deleteHost("10310");System.o ...

  5. 使用C#删除一个字符串数组中的空字符串

    C#中要如何才能删除一个字符串数组中的空字符串呢?随着微软对C#不断发展和更新,C#中对于数组操作的方式也变得越来越多样化.以往要实现过滤数组中的空字符串,都是需要实行循环的方式来排除和过滤.C#3. ...

  6. c+字符串数组_了解C ++字符串数组

    c+字符串数组 Hey, Folks! So, as programmers, we often deal with Arrays of all data types. We'll cover C++ ...

  7. java js对象转字符串数组_js 转json格式的字符串为对象或数组(前后台)的方法

    一.前台 // 转换成对象 var myObject = JSON.parse(_data); alert("对象:"+myObject.msg); // 转换成数组 var my ...

  8. mysql json类型数组索引_MySQL JSON 类型数据操作

    1.Java 中动态扩展字段,会导致数据库表被锁,在MySQL 5.7.8版本之前,因为MySQL不能直接操作JSON类型数据,可以将一个字段设定成varchar类型,里面存放JSON格式数据,这样在 ...

  9. c 字符串数组_C语言探索之旅 | 第二部分第四课:字符串

    内容简介 前言 字符类型 显示字符 字符串其实就是字符的数组 字符串的创建和初始化 从 scanf 函数取得一个字符串 操纵字符串的一些常用函数 总结 第二部分第五课预告 1. 前言 上一课 C语言探 ...

最新文章

  1. http 权威指南 目录
  2. 关于stable_sort()和sort()的区别:
  3. php 任意字符串_php 生成任意长度字符串的类(只含有数字 只含有字母 混合数字和字母)...
  4. python中r55的执行结果是_import numpy as np
  5. 计算机的硬件发展趋势为,高性能计算机的发展趋势
  6. mysql语句怎么记_mysql语句记录
  7. git-比对不同-diff
  8. 结合Pandas中的多个数据集
  9. 手把手教你如何把本地文件传到服务器,如何映射
  10. SVN的下载和文件更新
  11. C#工厂模式——简单工厂、工厂方法、反射+简单工厂、抽象工厂
  12. ORA-01830: date format picture ends before converting entire input string的几种原因
  13. BitTorrent 原理简介
  14. ROCKCHIP UART开发指南
  15. 大鱼吃小鱼小游戏完整版
  16. 《基于移动互联的智慧健康社区系统的研发》 CSCD
  17. 微信可以设置雪花昵称和彩色昵称了
  18. 成都敏之澳:拼多多关键词选词关键要素是什么?
  19. 如何使用计算机隐藏功能,Win7系统25个隐蔽功能使用方法
  20. java filenotfoundexception类_java.io.FileNotFoundException:没有此类文件或目录错误

热门文章

  1. 【算法】java 用 数组 模拟 队列
  2. 【Flink】Flink 如何 保证 同一个key对应的state是一个呢?KeyedProcessFunction
  3. 95-170-046-源码-Time-Flink时间系统系列之ProcessFunction使用分析
  4. 【janino】janino 加载自定义函数报错 CompileException xxx cannot be invoked in static context
  5. spark学习-Spark的Core理解
  6. 2021高考成绩怎么查询时间北京,2021年北京高考成绩几号公布可以查询,查询时间安排...
  7. java中的让步_java基本教程之线程让步 java多线程教程
  8. MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限
  9. Docker的Hadoop-Hbase的 Docker Hub文档
  10. Spring Boot2