当前位置:首页 » 《随便一记》 » 正文

C#解析JSON

21 人参与  2024年05月07日 08:36  分类 : 《随便一记》  评论

点击全文阅读


https://blog.csdn.net/weixin_43046974/article/details/131449900

C#解析JSON
1. JSON定义2. JSON一般构成及解析方法3. 解析举例子 1. JSON对象解析,只包含一层对象{}2. 嵌套JSON对象解析,包含多层对象{}3. JSON数组解析1(数组循环遍历)4. JSON数组解析2(使用index获取数据,index从0开始计算)5. JSON 对象中的数组,一层对象{}中包含数组[]6. 嵌套 JSON 对象中的数组,多层对象{}包含数组[]

1. JSON定义

全称“JavaScript Object Notation(JavaScript对象表示法)”,JSON 是存储和交换文本信息的语法。

举例:

[    {        "id": 2,        "name": "星河爆破",        "number": 999    },    {        "id": 3,        "name": "九星连珠",        "number": 9    },    {        "id": 4,        "name": "一语成谶",        "number": 999    }]

学习JSON基础教程:学习JSON基础教程
在线JSON解析及格式化验证网站:在线JSON解析及格式化验证网站

2. JSON一般构成及解析方法

JSON序列化与反序列化

JSON序列化:将对象转换成JSON 字符串
JSON反序列化:将JSON 字符串转换成对象

JSON结构(2种)
(1)对象结构:{}

{key1:value1,key2:value2...}key的数据类型:字符串value的数据类型:字符串、数值、null、json数组[]、json对象{}

(2)数组结构:[]

JSON数组结构:[value1,value2......]value的数据类型:字符串、数值、null、json数组[]、json对象{}

C#代码解析JSON
可使用Visual Studio调试代码,使用C#中的Newtonsoft库来解析JSON,添加引用

using Newtonsoft.Jsonusing Newtonsoft.Json.Linq

解析规则(重要)

针对对象结构{},使用JObject解析
针对数组结构[],使用JArray解析

3. 解析举例子

1. JSON对象解析,只包含一层对象{}

JSON文本:

{    "name":"张三",    "name_en":"zhangssan"}

解析代码如下:

string jsonText = "{\"name\":\"张三\",\"name_en\":\"zhangssan\"}";//解析对象JObject JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);//获取此对象key="name"和key="name_en"的值string zone = jo["name"].ToString();string zone_en = jo["name_en"].ToString();Console.WriteLine(zone);Console.WriteLine(zone_en);

2. 嵌套JSON对象解析,包含多层对象{}

JSON文本:

{    "allname":{        "name":"张三",        "name_en":"zhangsan"    }}

解析代码如下:

string jsonText = "{\"allname\":{\"name\":\"张三\",\"name_en\":\"zhangsan\"}}";//解析对象JObjectJObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);//获取此对象中key="allname"下key="name"的值string zone = jo["allname"]["name"].ToString();string zone_en = jo["allname"]["name_en"].ToString();Console.WriteLine(zone);Console.WriteLine(zone_en);

3. JSON数组解析1(数组循环遍历)

JSON文本:

[    {        "a":"a1",        "b":"b1"    },    {        "a":"a2",        "b":"b2"    }]

解析代码如下:

string jsonArrayText = "[{\"a\":\"a1\",\"b\":\"b1\"},{\"a\":\"a2\",\"b\":\"b2\"}]"; //解析数组JArrayJArray jArray = (JArray)JsonConvert.DeserializeObject(jsonArrayText);//循环获取数组中的内容for(int i = 0; i < jArray.Count; i++){    //解析对象JObject     JObject j = JObject.Parse(jArray[i].ToString());    //获取此对象key="a"的值    string a = j["a"].ToString();    Console.WriteLine(a);}

4. JSON数组解析2(使用index获取数据,index从0开始计算)

JSON文本:

[    {        "a":"a1",        "b":"b1"    },    {        "a":"a2",        "b":"b2"    }]

解析代码如下:

string jsonArrayText = "[{\"a\":\"a1\",\"b\":\"b1\"},{\"a\":\"a2\",\"b\":\"b2\"}]";   //解析数组JArray           JArray jArray = (JArray)JsonConvert.DeserializeObject(jsonArrayText);//获取数组jArray中第1个(从第0开始计算)key="a"的值string str = jArray[1]["a"].ToString();Console.WriteLine(str);

5. JSON 对象中的数组,一层对象{}中包含数组[]

JSON文本:

{    "name":"网站",    "num":3,    "sites":[        "Google",        "Runoob",        "Taobao"    ]}

解析代码如下:

string jsonText = "{\"name\":\"网站\",  \"num\":3,  \"sites\":[\"Google\",\"Runoob\",\"Taobao\"]}";//解析对象JObjectJObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);string sites = jo["sites"].ToString();//解析数组JArrayJArray jArray = (JArray)JsonConvert.DeserializeObject(sites);//获取数组sites jArray中第0个(从第0开始计算)的值string sitesdetails = jArray[0].ToString();Console.WriteLine(sitesdetails);

6. 嵌套 JSON 对象中的数组,多层对象{}包含数组[]

JSON文本:

{    "name":"网站",    "num":2,    "sites": [        { "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },        { "name":"Taobao", "info":[ "淘宝", "网购" ] }    ]}

解析代码如下:

string jsonText = "{\"name\":\"网站\",\"num\":2,\"sites\":[{\"name\":\"Google\",\"info\":[\"Android\",\"Google搜索\",\"Google翻译\"]},{\"name\":\"Taobao\",\"info\":[\"淘宝\",\"网购\"]}]}";//解析对象JObjectJObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);string sites = jo["sites"].ToString();//解析数组JArrayJArray jArray = (JArray)JsonConvert.DeserializeObject(sites);//循环遍历sites数组for (int i = 0; i < jArray.Count; i++){  //解析对象JObject  JObject j = JObject.Parse(jArray[i].ToString());  string info = j["info"].ToString();  //解析数组JArray  JArray jArray2 = (JArray)JsonConvert.DeserializeObject(info);  //循环遍历info数组  for (int k = 0; k < jArray2.Count; k++)  {    Console.WriteLine(jArray2[k]);  }

点击全文阅读


本文链接:http://zhangshiyu.com/post/104444.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 丁榆:结局+番外看点十足(和渣男小叔叔的游戏日常)全书无套路阅读
  • 法医狂妃:王爷你命中缺我小说(苏七夜景辰)全本完整阅读最新章节(法医狂妃:王爷你命中缺我)_笔趣阁
  • (头条)洛甯陆乘渊小说(闪婚老公是卧底,消失三年回来了)整本免费版阅读无广告(洛甯陆乘渊)
  • 陆少今天又秀恩爱了吗后续(陆怀骁苏棠)(陆少今天又秀恩爱了吗)整本畅享在线+无广告结局
  • 独家江柏俊夏清恬无删减(重生之团长俊夫要离婚)(江柏俊夏清恬)TXT免费版阅读
  • 全网首发重生下乡嫁糙汉,渣男全家悔哭了彩蛋(师明凯颜惜雪)(重生下乡嫁糙汉,渣男全家悔哭了)全本完整阅读无弹窗
  • 我是让他不屑一顾,不愿多看一眼的路人小说(安喻意商晋深)(我是让他不屑一顾,不愿多看一眼的路人)在线畅读阅读连载中
  • 丁榆后续(和渣男小叔叔的游戏日常)全文在线下载在线+纯净版结局
  • 洛甯陆乘渊::结局+番外评价五颗星-闪婚老公是卧底,消失三年回来了:结局+番外新上热文
  • 前传孟流年周丽珍续集(孟流年周丽珍)终章阅读极简(孟流年周丽珍)
  • 夏语栀祁墨寒我们各归人海,此生,也不必再见彩蛋小说结尾+附加(我们各归人海,此生,也不必再见)清爽版阅读
  • 重生下乡嫁糙汉,渣男全家悔哭了小说完结篇(师明凯颜惜雪)(重生下乡嫁糙汉,渣男全家悔哭了)全书无套路阅读无广告小说大结局

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1