【Azure Developer】使用.Net Core解析JSON的笔记

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【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()//或在知晓JSON格式的对象时,可直接反序列化。JsonConvert.DeserializeObject<List<T>>(jsonresult);

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

JObject obj = JObject.Parse(jsoncontent);

obj ["Key Name"].ToString()//或在知晓JSON格式的对象时,可直接反序列化。JsonConvert.DeserializeObject<T>(jsoncontent);

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中所携带的值。



C#
自动换行
xxxxxxxxxx
3
 
1
JArray x = JArray.Parse(result);
2

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

为卡片添加间距 
删除卡片

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()

附加一:使用Python读取JSON格式得文件内容并输出

import os, uuid
import json

try:
    local_path = "."
    local_file_name = "All My Case.json"
    upload_file_path = os.path.join(local_path, local_file_name)

    with open(upload_file_path, "r") as data:   
        #print(data.read()) 
        y = json.loads(data.read())
        print(len(y))
        for c in y:
            print(c[0]+","+c[8]+","+c[36]+","+c[42])        

except Exception as ex:
    print('Exception:')
    print(ex)

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

相关文章
|
26天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
86 3
|
1月前
|
SQL 存储 JSON
SQL,解析 json
SQL,解析 json
66 8
|
21天前
|
测试技术 API 开发者
精通.NET单元测试:MSTest、xUnit、NUnit全面解析
【10月更文挑战第15天】本文介绍了.NET生态系统中最流行的三种单元测试框架:MSTest、xUnit和NUnit。通过示例代码展示了每种框架的基本用法和特点,帮助开发者根据项目需求和个人偏好选择合适的测试工具。
32 3
|
23天前
|
安全 网络安全 数据安全/隐私保护
【Azure Developer】System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
|
3月前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
28天前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:实现过程与关键细节解析an3.021-6232.com
随着互联网技术的快速发展,ASP.NET作为一种广泛使用的服务器端开发技术,其与数据库的交互操作成为了应用开发中的重要环节。本文将详细介绍在ASP.NET中如何连接SQL数据库,包括连接的基本概念、实现步骤、关键代码示例以及常见问题的解决方案。由于篇幅限制,本文不能保证达到完整的2000字,但会确保
|
2月前
|
JSON API 数据格式
requests库中json参数与data参数使用方法的深入解析
选择 `data`或 `json`取决于你的具体需求,以及服务器端期望接收的数据格式。
200 2
|
2月前
|
JSON 前端开发 JavaScript
解析JSON文件
解析JSON文件
114 9
|
1月前
|
JSON JavaScript API
商品详情数据接口解析返回的JSON数据(API接口整套流程)
商品详情数据接口解析返回的JSON数据是API接口使用中的一个重要环节,它涉及从发送请求到接收并处理响应的整个流程。以下是一个完整的API接口使用流程,包括如何解析返回的JSON数据:
|
2月前
|
监控 网络协议 API
.NET WebSocket 技术深入解析,你学会了吗?
【9月更文挑战第4天】WebSocket 作为一种全双工协议,凭借低延迟和高性能特点,成为实时应用的首选技术。.NET 框架提供了强大的 WebSocket 支持,使实时通信变得简单。本文介绍 WebSocket 的基本概念、.NET 中的使用方法及编程模型,并探讨其在实时聊天、监控、在线游戏和协同编辑等场景的应用,同时分享最佳实践,帮助开发者构建高效实时应用。
135 12

推荐镜像

更多
下一篇
无影云桌面