【Azure Developer】使用.Net Core解析JSON的笔记
在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),所以在获取值时候,就需要使用到JArray和JToken。
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的笔记的更多相关文章
- 使用 jackson 解析 json 演示样例
首先须要下载3个包,下载地址在Github FasterXML,这三个核心模块各自是: Streaming ("jackson-core") defines low-level s ...
- IOS数据解析JSON
//非原创 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSO ...
- 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 ...
- 利用fastjson解析json并通过js&ajax实现页面的无跳转刷新
1.json是一种优秀的数据格式,在移动开发和web开发中经常用到,本例中通过一个小案例讲解如何通过alibaba的开源框架fastjson来解析jason数据格式并通过js实现无跳转刷新 2,新建一 ...
- Qt解析Json数据
1 JSON数据简介 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范) ...
- Swift: 用Alamofire做http请求,用ObjectMapper解析JSON
跟不上时代的人突然间走在了时代的前列,果然有别样的风景.首先鄙视一下AFNetworking.这个东西实在太难用了.不想封装都不行,要不写一大堆代码. NSURL *URL = [NSURL URLW ...
- Spring-MVC配置Gson做为Message Converter解析Json
Spring-MVC配置Gson做为Message Converter解析Json 在学习Spring的时候看到可以使用@RequestBody 和@ResponseBody注解来是的Spring自动 ...
- JackSon解析json字符串
JackSon解析json字符串 原文:http://blog.csdn.net/java_huashan/article/details/9353903 概述 jackson解析json例子 准备工 ...
- Java解析json(二):jackson
Java解析json(二):jackson 官方参考 Jackson Home Page:https://github.com/FasterXML/jackson Jackson Wiki:htt ...
随机推荐
- TX-LCN分布式事务框架使用
官方文档相关: GitHub地址:https://github.com/codingapi/tx-lcn 官方文档:https://www.codingapi.com/docs/txlcn-prefa ...
- IdentityServer4与API单项目整合(net core 3.X)
一.创建一个空的api项目 添加identityserver4的nuget包 配置config文件 public static IEnumerable<IdentityResource> ...
- 趣图:后端工程师做 UI 的活
扩展阅读 趣图:苦逼的后端工程师 趣图:前端 VS 后端 [趣图]开发人员腹黑的一面
- Flutter音频播放--chewie_player的基本使用(二)——样式修改
先贴修改图,只改了部分布局与样式 官方的demo并不十分适合我的需求,从组件进入chewie_player并没有查看到相应的布局,那么直接从chewie的依赖包进入 可以看到以下的目录结构: 我主要修 ...
- day58:Linux:BashShell&linux文件管理&linux文件下载上传
目录 1.BashShell 2.Linux文件管理 3.Linux文件下载和上传 BashShell 1.什么是BeshShell? 命令的解释,用来翻译用户输入的指令 2.BashShell能做什 ...
- vue下history模式刷新后404错误解决
官方说明文档: https://router.vuejs.org/zh/g... 一. 实测 Linux 系统 Apache 配置: 更改站点配置文件即可,我这里在 Directory 标签后面添加了 ...
- sping ioc 源码分析(二)-- refresh()方法分析
测试环境代码: @Configuration @ComponentScan("com.yang.xiao.hui.ioc") @Conditional(MyCondition.cl ...
- Python-列表推导式、生成器、字典推导式
列表推导式 [] + for + if 算子.循环.条件, 对相同的数据进行处理, 算子也可以是函数 number = [i for i in range(1, 101) if i % 2 == 0] ...
- Python-对迭代器进行切片操作-itertools模块
案例: 对于某个文件,我只想读取到其中100~200行之间的内容,是否可以通过切片的方式进行读取? 我想: f = open() f[100:200] 可行? 如何解决这个问题? 方法1: 全部读取到 ...
- ACMer不得不会的线段树,究竟是种怎样的数据结构?
大家好,欢迎阅读周三算法数据结构专题,今天我们来聊聊一个新的数据结构,叫做线段树. 线段树这个数据结构很多人可能会有点蒙,觉得没有听说过,但是它非常非常有名,尤其是在竞赛圈,可以说是竞赛圈的必备技能. ...