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

需求:

假设有如下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#类,如图所示:

把这部分内容复制,粘贴到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<T>。关于泛型列表的有关内容在这篇文章里就不再赘述了,大家可以直接把它当成数组使用。遍历数组的方法在此依然适用,例如代码中的:

foreach (Manager ep in rb.manager)

{

Console.WriteLine(ep.age);

}

原文地址:https://www.cnblogs.com/zouhao/p/11420072.html

时间: 2024-08-30 08:53:01

C# Newtonsoft.Json解析json字符串处理(最清晰易懂的方法)的相关文章

用 org.json 解析JSON

1.下载 java-json.jar 包 介绍:http://www.json.org/ 下载: https://github.com/stleary/JSON-java/releases https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.json%22%20AND%20a%3A%22json%22 附件:java-json.jar.zip 附件:json-20160810-javadoc.jar 2.解析 JSON  代码如下: 1

C# Newtonsoft.Json解析json字符串处理 - JToken 用法

//*调用服务器API(获取可以处理的文件) //1.使用JSON通信协议(调用[待化验任务API]) String retData = null; { JToken json = JToken.Parse(Global.jsonTemplate); json["actionName"] = "待化验任务API"; json["action"] = "awaitLaboratory"; json["paramInfo

Json 解析Json

1.把LitJson导入到项目里面; 2.建一个下面的脚本,不挂在游戏对象上; 3.新建下面一个脚本,挂在相机上. 1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 public class AnalyzeJsonTest : MonoBehaviour 6 { 7 string sss; 8 void Start () 9 { 10 sss = 11 "{ 'desc

通过Json和Gson,快速生成和解析json字符串

1,首先我们要先明白json与gson有什么区别 其实他们是完全不同的概念: json是一种数据格式,便于数据传输,存储,交换. gson则是一种组件库,就是通过Gson我们可以把java中的对象(gson.toJson()),转换成Json字符串,当然反过来也是可以的(gson.fromJson); 2,代码 首先我们需要JSon和Gson这两个jar包 package com.json.dome; import java.util.ArrayList;import java.util.Lis

Android 之json解析2

JSON(JavaScript Object Notation) 定义:字符串 键值对 解析方法有JSON,谷歌GSON,阿里巴巴FastJSON 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性. 业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换. JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. Json建构于两种结构: 1.“名称/值”对的集合(A collection of name

使用JSONObject生成和解析json

使用JSONObject生成和解析json 1. json数据类型 类型 描述 Number 数字型 String 字符串型 Boolean 布尔型 Array 数组 Object 对象 null 空值 (1)json中不区分整数.小数等类型,而统一使用Number来存储数字. (2)Array表示数组,以中括号"[]"括起来,元素之间以逗号分隔,元素可以为任意类型. (3)Object表示对象,类似于C语言中的结构体,以花括号"{}"括起来,其元素要求为键值对,k

Android数据解析-JSON解析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,web开发中这个哥们时常出现在你的程序中,你还不得不解析,一般说到JSON,都会不由自主的对比一下它的前辈XML,XML从设计之初到现在已经有十年的光景,在有些方面的作用已经超出其当时设计XML的初衷,WebService是XML的主要

XML和JSON解析笔记

XML -> 1. sax  2.Dom JSON解析  在IOS5.0以后提供NSJSON  在5.0之前用SBJSON和JSONKit 本讲内容 1.解析的基本概念 2.XML数据结构 3.JSON数据结构 4.两种数据结构的优缺点 解析: 从事先规定好的格式中提取数据 解析的前提: 提前约定好格式, 数据提供方按照格式提供数据,数据获取方则按照格式获取数据 XML基本概念 可扩展标记语言 功能: 数据交换 Web服务  内容管理 XML数据结构的语法 一对尖括号代表一个节点,或者标签 只有

安卓中解析json数据

一.概述 JSON是JavaScript Object Notation的简称,起源于js(javascript)它是一种轻量级的数据交换格式,JSON不仅在js中广泛使用,同时还在其他领域得到广泛使用,如c,c++,java,Php,swift等等,成为了一种通用的理想数据交换格式,它有两种数据结构,分别是对象,数组,它形式上有花括号{}和中括号[]嵌套,{}中的是代表对象,[]中的为数组,即对象中有数组,数组中又有对象,而且以及键/值对出现. json语法: 数据在键值对中 数据有逗号分离