注:博客迁移到csdn,本文最新地址:https://blog.csdn.net/sajiazaici/article/details/77647625

以下为原文

本文是全网第二简单的方法,因为我女票也发了一篇博客说是全网最简单的方法,我不能和她争。。。

PS:网络上还有各种各样的方法大家可以自行探究,不过我敢说肯定没有本文讲的清晰。。几句话就解决的事绕来绕去的说。。

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

需求:

假设有如下json字符串:

{
"companyID": "", "employees": [
{
"firstName": "Bill",
"lastName": "Gates"
},
{
"firstName": "George",
"lastName": "Bush"
}
], "manager": [
{
"salary": "",
"age": ""
},
{
"salary": "",
"age": ""
}
] }

请利用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#类,如图所示:

把这部分内容复制,粘贴到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<RootObject>(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<RootObject>(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> employees { get; set; }
public List<Manager> 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

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

c#解析json字符串处理(最清晰易懂的方法)的更多相关文章

  1. java解析json字符串详解(两种方法)

    一.使用JSONObject来解析JSON数据官方提供的,所以不需要导入第三方jar包:直接上代码,如下 private void parseJSONWithJSONObject(String Jso ...

  2. mysql解析json字符串相关问题

    很多时候,我们需要在sql里面直接解析json字符串.这里针对mysql5.7版本的分水岭进行区分. 1.对于mysql5.7以上版本 使用mysql的内置函数JSON_EXTRACT(column, ...

  3. 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象

    使用 dynamic 标记解析JSON字符串  http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...

  4. json解析json字符串时候,数组必须对应jsonObjectArray,不能对应JsonObject。否则会解析错误。

    json第三方解析json字符串时候,json数组必须对应jsonObjectArray,不能对应JsonObject.->只要是[]开头的都是json数组字符串,就要用jsonArray解析 ...

  5. JS解析json数据并将json字符串转化为数组的实现方法

    json数据在ajax实现异步交互时起到了很重要的作用,他可以返回请求的数据,然后利用客户端的js进行解析,这一点体现出js的强大,本文介绍JS解析json数据并将json字符串转化为数组的实现方法, ...

  6. C#解析JSON字符串总结

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

  7. Json转model对象,model转json,解析json字符串

    GitHub链接: https://github.com/mozhenhau/D3Json D3Json 通过swift的反射特性,把json数据转换为model对象,本类最主要是解决了其他一般jso ...

  8. 解析Json字符串的三种方法

    在很多时候,我们的需要将类似 json 格式的字符串数据转为json, 下面将介绍日常中使用的三种解析json字符串的方法 1.首先,我们先看一下什么是 json 格式字符串数据,很简单,就是 jso ...

  9. Java解析json字符串和json数组

    Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){ Map ...

  10. JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串;JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

    JSON.stringify()方法是将一个javascript值(对象或者数组)转换成为一个JSON字符串:JSON.parse()解析JSON字符串,构造由字符串描述的javascript值或对象

随机推荐

  1. 【python】10分钟教你用python下载和拼接微信好友头像图片

    前言 相信微信大家是用得再多也不过了.那么,对于python+微信,又能玩出什么新的花样呢?下面小编就给大家带来一个好玩的东西.用python下载所有的微信好友的头像,然后拼接成一张大图.这样,大家就 ...

  2. Linux 安装python3.7.3 提示已经自动安装了pip和setuptools 可是使用时bash提示没有找到pip

    Linux 安装python3.7.3 提示已经自动安装了pip和setuptools 可是使用时bash提示没有找到pip 今天的任务就是找到解决办法 另外就是用布置好python3的路径

  3. angluarJs与后台交互小案例

    .myService.html: <!DOCTYPE HTML> <html ng-app="app"> <head> <title> ...

  4. ubuntu下安装谷歌浏览器

    deb 是 Debian Linux 的安装格式,在 ubuntu 中同样可以使用.要安装 deb 安装包,需要使用 dpkg这个终端命令,命令格式如下: $ sudo dpkg -i <pac ...

  5. 网络编程之socket(TCP,UDP)

    socket层 tcp协议和udp协议 1)Socket服务器编程 主要包括下面的几步: 1.打开socket 2.绑定到一个地址和端口 3.侦听进来的连接 4.接受连接 5.读写数据 (2)Sock ...

  6. C++_类入门4-String类

    很多应用程序都需要处理字符串.C语言在string.h(C++中为cstring)中提供了一系列的字符串函数,很多早期的C++实现为处理字符串提供了自己的类. string类是由头文件string支持 ...

  7. 洛谷 P2542 [AHOI2005]航线规划(Link-cut-tree)

    题面 洛谷 bzoj 题解 离线处理+LCT 有点像星球大战 我们可以倒着做,断边变成连边 我们可以把边变成一个点 连边时,如果两个点本身不联通,就\(val\)赋为\(1\),并连接这条边 如果,两 ...

  8. LOJ6502. 「雅礼集训 2018 Day4」Divide(构造+dp)

    题目链接 https://loj.ac/problem/6502 题解 中间一档部分分提示我们将所有的 \(w_i\) 排序. 考虑如果我们能构造出这样一个 \(w_i\) 的序列,使得该序列满足:对 ...

  9. Flask之flask-script 指定端口

    简介 Flask-Scropt插件为在Flask里编写额外的脚本提供了支持.这包括运行一个开发服务器,一个定制的Python命令行,用于执行初始化数据库.定时任务和其他属于web应用之外的命令行任务的 ...

  10. vue实现进入页面表单聚焦

    <input type="text" ref="input"/> <script> mounted(){ this.$refs['inp ...