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

简介: 【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

相关文章
|
5月前
|
存储 算法 安全
.NET 平台 SM2 国密算法 License 证书生成深度解析
授权证书文件的后缀通常取决于其编码格式和具体用途。本文档通过一个示例程序展示了如何在 .NET 平台上使用国密 SM2 算法生成和验证许可证(License)文件。该示例不仅详细演示了 SM2 国密算法的实际应用场景,还提供了关于如何高效处理大规模许可证文件生成任务的技术参考。通过对不同并发策略的性能测试,开发者可以更好地理解如何优化许可证生成流程,以满足高并发和大数据量的需求。 希望这段描述更清晰地传达了程序的功能和技术亮点。
385 13
.NET 平台 SM2 国密算法 License 证书生成深度解析
|
4月前
|
开发框架 .NET 中间件
.net8 使用 license 证书授权案例解析
本文介绍了如何使用 `.NET CLI` 创建并改造一个 `ASP.NET Core Web API` 项目,以实现基于许可证的授权机制。具体步骤包括创建项目、添加必要的 NuGet 包(如 `Standard.Licensing` 和 `Swashbuckle.AspNetCore`),以及修改 `Program.cs` 文件以集成自定义的许可证验证中间件。项目结构中新增了 `LicenseController` 接口用于处理授权相关操作,并通过测试流程验证了默认天气接口在未授权和授权状态下的响应情况。整个过程确保了应用程序能够在启动时正确验证许可证,保障系统的安全性与可控性。
166 8
.net8 使用 license 证书授权案例解析
|
4月前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
307 4
JSON数据解析实战:从嵌套结构到结构化表格
|
6月前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
6月前
|
开发框架 安全 .NET
【Azure Developer】.NET Aspire 项目本地调试遇 Grpc.Core.RpcException 异常( Error starting gRPC call ... )
Error starting gRPC call. HttpRequestException: The SSL connection could not be established, see inner exception. AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot
134 12
|
6月前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
999 12
|
6月前
|
JSON 缓存 API
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
180 12
|
Android开发
.Net 转战 Android 4.4 日常笔记目录
原文:.Net 转战 Android 4.4 日常笔记目录 .Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建 .Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序 .
858 0
|
7月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
165 5
|
10月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
170 7

推荐镜像

更多
  • DNS