在C#中解析JSON的一些历史代码记录,分别记录针对各种情况的解析方式。

DLL的引用

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

需要使用的类型

JArray:对应JSON字符串中的[]数组表示

JArray x = JArray.Parse(jsonresult);

x[0].ToString()

JObject:对应JSON字符串中的{"key":"value"}对象键值对

JObject obj = JObject.Parse(jsoncontent);

obj ["Key Name"].ToString()

JToken:针对JSON中的值为["value1","value2","value3"]的情况使用JToekn解析后,可以直接使用jtoken[i]依次获取value

JToken jtvalue= JToken.Parse(jsonstring);

jtvalue[0].ToString()

JSON字符串格式一:

[
{
"tree": [
{
"id": "b661f9c2-28ee-800a-b621-118a6787a8e6",
"name": "Automanage Preview",
"type": "productname",
"tree": [
{
"id": "d2067d69-7bb0-9ee4-cdf8-097211d4229a",
"tree": [
{
"id": "647d2678-3991-b6f2-595c-5215afaaa61a",
"type": "category",
"typeid": "bcc1837c-6364-a038-6359-afaa3b5144b5",
"tags": []
},
{
"id": "cf520d66-1d51-3644-2d60-f26a2ce384c3",
"name": "Can't create",
"type": "category",
"typeid": "5414a0bd-ea3d-77f1-2bed-07800e2c7e32",
"state": "public",
"tags": []
},
{
"id": "8279780f-d659-5819-0598-f9cca054d8df",
"name": "Error when ",
"type": "category",
"typeid": "6c35e082-3d87-83d4-9fa7-d213a2e998b3",
"state": "public",
"tags": []
},

使用JArray来解析JSON字符串到由JSON Object组成的数组,也可以通过Linq语句来过滤。

JArray x = JArray.Parse(result);

var mc21v = x.Children<JObject>().FirstOrDefault(o => o["tree"][0]["name"] != null && o["tree"][0]["name"].ToString() == "filter value");

通过对象中的tree ->name查找JSON字符串中高亮部分,也是第一级Tree节点下子节点的name来过滤。当获取到mc21v 节点对象后,继续根据是否由数组,是否是对象(由key存在)依次递归来获取JSON中所携带的值。

//mc21v
if (mc21v != null && mc21v["tree"] != null && mc21v["tree"][0]["tree"] != null && mc21v["tree"][0]["tree"].Count() > 0)
{
var name = mc21v["tree"][0]["name"].ToString();
var submc21v = mc21v["tree"][0]["tree"]; foreach (var s in submc21v)
{
log.LogInformation(name + " / " + s["name"].ToString());
}
}

JSON字符串格式二:

{
"table_parameters": [
{
"header_names": [
"ID",
"Name",
"Time",
...
],
"table_parameter_result": [
[
"3125649",
"test",
"2020-10-23T18:35:52.4121265",
.....
],
[
"123123545",
"test again",
"2020-10-23T20:27:27.3168876",
...
],
[
"120100503",

以上格式为自定义的JSON表格格式,table_parameters节点中包含表头(header_names)和表内容(table_parameter_result),所以在获取值时候,就需要使用到JArrayJToken。

   JObject details = JObject.Parse(sdresult);

JToken resultTableObj = details["table_parameters"][0]; resultTableObj[i].ToString()

What is JSON?

  • JSON stands for JavaScript Object Notation
  • JSON is a lightweight data-interchange format
  • JSON is "self-describing" and easy to understand
  • JSON is language independent *

MORE JSON: https://www.w3schools.com/js/js_json_intro.asp

【Azure Developer】使用.Net Core解析JSON的笔记的更多相关文章

  1. 使用 jackson 解析 json 演示样例

    首先须要下载3个包,下载地址在Github FasterXML,这三个核心模块各自是: Streaming ("jackson-core") defines low-level s ...

  2. IOS数据解析JSON

    //非原创 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSO ...

  3. Swift: Alamofire -> http请求 & ObjectMapper -> 解析JSON

    1 2 3 4 5 6 7 8 9 10 11 NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.js ...

  4. 利用fastjson解析json并通过js&ajax实现页面的无跳转刷新

    1.json是一种优秀的数据格式,在移动开发和web开发中经常用到,本例中通过一个小案例讲解如何通过alibaba的开源框架fastjson来解析jason数据格式并通过js实现无跳转刷新 2,新建一 ...

  5. Qt解析Json数据

    1 JSON数据简介   JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范) ...

  6. Swift: 用Alamofire做http请求,用ObjectMapper解析JSON

    跟不上时代的人突然间走在了时代的前列,果然有别样的风景.首先鄙视一下AFNetworking.这个东西实在太难用了.不想封装都不行,要不写一大堆代码. NSURL *URL = [NSURL URLW ...

  7. Spring-MVC配置Gson做为Message Converter解析Json

    Spring-MVC配置Gson做为Message Converter解析Json 在学习Spring的时候看到可以使用@RequestBody 和@ResponseBody注解来是的Spring自动 ...

  8. JackSon解析json字符串

    JackSon解析json字符串 原文:http://blog.csdn.net/java_huashan/article/details/9353903 概述 jackson解析json例子 准备工 ...

  9. Java解析json(二):jackson

    Java解析json(二):jackson   官方参考 Jackson Home Page:https://github.com/FasterXML/jackson Jackson Wiki:htt ...

随机推荐

  1. Object类:又回到最初的起点

    Object类大概是每个JAVA程序员认识的第一个类,因为它是所有其他类的祖先类.在JAVA单根继承的体系下,这个类中的每个方法都显得尤为重要,因为每个类都能够调用或者重写这些方法.当你JAVA学到一 ...

  2. 【Unity 插件】Lean Pool 使用

    2020-09-11 Lean Pool 是一个轻量级的游戏对象池库,它可以轻松的帮助你的游戏提高性能.当然,Lean Pool也可以工作于普通的C#类. 目录: 1.Lean Pool使用 2.Le ...

  3. ios自动识别电话并变色的问题解决方法

    问题: 在做移动端页面时发现长串数字都被ios系统的手机识别为电话号码,且文字变成很土的蓝色,点击有下划线并弹出提示拨打该电话号码. 解决方法: 1.在head中加上下面这行代码就OK了(仅限于单页面 ...

  4. MySQL手注之联合查询注入

    了解联合查询注入之前,先要了解一下什么是union? union是用于合并两个sql查询结果的语句. 要使用union 必须有相同的列数  必须有两条以上的select语句组成  列的数据类型必须兼容 ...

  5. burp suite 之 intruder(入侵者)

    intruder:包括自动提交请求的功能 登录密码 撞库 注入 脱裤 Fuzz Burp intruder包含四个模块: Target:攻击的网站目标的详情信息 Positions :用来设置攻击类型 ...

  6. 使用 IIS 新建WebService站点供Android访问远程sqlserver数据库

    新增网站 打开IIS控制台,找到服务根目录,右键,新建网站 网站设定 浏览测试 使用刚才生成的默认HelloWorld的服务1页面,记得加上端口号 http://localhost:8090/serv ...

  7. 基于gis的系统开发,程序运行出现问题 ArcGIS product not specified.You must first bind to an ArcGIS version prior to using any ArcGIS components.

    在之前初始化的时候添加下面的一行代码:ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop);还需要添加一个引 ...

  8. 探究"补阶乘大法的本质"——糖水不等式!

    废话不多说先来康一条例题: 证明: 下面给出题目的一种解法(我称之为"补阶乘大法"): 思考:为什么补上一个阶乘(准确说不是阶乘,是两个数阶乘的之商)项,放缩后再给去掉,就能达到我 ...

  9. MeteoInfoLab脚本示例:MODIS Sinusoidal投影HDF数据

    MODIS卫星很多陆面数据都是Sinusoidal投影,数据被分为一个个10*10度(赤道地区)的瓦片(http://modis-land.gsfc.nasa.gov/MODLAND_grid.htm ...

  10. Verilog基础入门——简单的语句块编写(二)

    [题干] [代码] module top_module( input a, input b, output out ); assign out = a&b; endmodule [与或非门等] ...