Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)

Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)需求 假设有如下 json 字符串 companyID 15 employees firstName Bill lastName Gates firstName George

需求:

假设有如下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/ )。

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

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

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

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

Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)

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

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

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

Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)

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

[csharp] view plain copy

  1. 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后可直接运行):

[csharp] view plain copy

  1. using Newtonsoft.Json;  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5. using System.Text;  
  6. using System.Threading.Tasks;  
  7.   
  8. namespace ConsoleJsonTest  
  9. {  
  10.     class Program  
  11.     {  
  12.         static void Main(string[] args)  
  13.         {  
  14.   
  15.             string jsonText = ” {\”companyID\”:\”15\”,\”employees\”:[{\”firstName\”:\”Bill\”,\”lastName\”:\”Gates\”},{\”firstName\”:\”George\”,\”lastName\”:\”Bush\”}],\”manager\”:[{\”salary\”:\”6000\”,\”age\”:\”23\”},{\”salary\”:\”8000\”,\”age\”:\”26\”}]} “;  
  16.             Console.WriteLine(jsonText);  
  17.   
  18.             RootObject rb = JsonConvert.DeserializeObject

    (jsonText);  
  19.   
  20.             Console.WriteLine(rb.companyID);  
  21.   
  22.             Console.WriteLine(rb.employees[0].firstName);  
  23.   
  24.             foreach (Manager ep in rb.manager)  
  25.             {  
  26.                 Console.WriteLine(ep.age);  
  27.             }  
  28.   
  29.             Console.ReadKey();  
  30.         }  
  31.     }  
  32.   
  33.     public class Employees  
  34.     {  
  35.         public string firstName { getset; }  
  36.         public string lastName { getset; }  
  37.     }  
  38.   
  39.     public class Manager  
  40.     {  
  41.         public string salary { getset; }  
  42.         public string age { getset; }  
  43.     }  
  44.   
  45.     public class RootObject  
  46.     {  
  47.         public string companyID { getset; }  
  48.         public List

     employees { 
    get
    set; }  
  49.         public List

     manager { 
    get
    set; }  
  50.     }  
  51. }  

输出结果:

Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)

说明:对于json字符串中的数组,如本例中的employees或者manager,用这篇文章里的在线工具会自动生成泛型列表List

。关于泛型列表的有关内容在这篇文章里就不再赘述了,大家可以直接把它当成数组使用。遍历数组的方法在此依然适用,例如代码中的:

foreach (Manager ep in rb.manager) { Console.WriteLine(ep.age); }

关注微信公众号”爆栈程序员” 专注与开发 逆向 安全 后端, 交流更多好玩的内容吧~~~

Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206435.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午3:42
下一篇 2026年3月19日 下午3:42


相关推荐

  • innodb存储引擎文件

    innodb存储引擎文件1 参数文件 my cnf 动态参数 静态参数 2 日志文件 binlog 作用 恢复 复制 审计参数 binlog cache sizebinlog formatmax binlog cache sizemax binlog sizesync binlogbinlo

    2026年3月17日
    3
  • 有什么优质的计算机专业书籍?操作系统、计算机网络、计算机组成、数据结构、数据库…..「建议收藏」

    有什么优质的计算机专业书籍?操作系统、计算机网络、计算机组成、数据结构、数据库…..「建议收藏」大家好,我是小林哥。平日里,大家都喊程序员加班多很辛苦,动不动就掉头发,但干的还是很香的,毕竟大多数公司钱还是给的很到位的,今年毕业应届生的我见到好多动不动就月薪20K~30K的,真让人两眼泪酸酸,当然这离不开他们大学期间的努力。讲真,没什么家庭背景的人,选择当程序员确实是比较好的选择了,原因有二:首先,当今互联网、AI人工智能、大数据等都是高速发展的行业,自然人才需求很多,薪资也相对其他传统行业高;第二,纯粹看你技术能力,只要自己愿意付出努力,技术能力肯定会慢慢提高上来,而且现在比起几十年

    2022年5月2日
    51
  • ChatGPT 怎麼用?5 分鐘上手的新手中文教學!

    ChatGPT 怎麼用?5 分鐘上手的新手中文教學!

    2026年3月15日
    2
  • spdLog的使用

    spdLog的使用以下为收集到或者个人测试的内容,侵权删一.优点非常快使用自带的例子测试写log,利用次数/时钟周期衡量结果*******************************************************************************Singlethread,1,000,000iteration

    2022年6月23日
    76
  • mysql要怎么做乐观锁_mysql乐观锁详解

    mysql要怎么做乐观锁_mysql乐观锁详解乐观锁 OptimisticLo 相对悲观锁而言 乐观锁机制采取了更加宽松的加锁机制 悲观锁大多数情况下依靠数据库的锁机制实现 以保证操作最大程度的独占性 但随之而来的就是数据库性能的大量开销 特别是对长事务而言 这样的开销往往无法承受 而乐观锁机制在一定程度上解决了这个问题 乐观锁 大多是基于数据版本 Version 记录机制实现 何谓数据版本 即为数据增加一个版本标识 在

    2026年3月26日
    2
  • pycharm如何修改背景颜色_如何设置幻灯片背景颜色为自定义

    pycharm如何修改背景颜色_如何设置幻灯片背景颜色为自定义Pycharm可以通过设置主题来设定背景颜色,但主题的背景颜色也仅仅局限特定的几种,通过如下的方式可以自定义背景颜色。File——Settings——Editor——General——(右侧上方的框框)Text——Defaulttext——选右侧的Background就可以设置背景色了。图中的灰色背景RGB是192,192,192。 …

    2022年8月25日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号