.net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken

  • 在VB.NET中,您可以使用Newtonsoft.Json程序包来处理JSON数据。为了方便获取多级JSON数据,您可以使用JObject类的SelectToken方法。以下是一个示例代码:

    Imports Newtonsoft.Json
    Imports Newtonsoft.Json.LinqPublic Sub Main()Dim jsonString As String = "{ 'a': 'abcd', 'b': 3333, 'c': [11, 22, 33], 'd': { 'd1': 'ddddd', 'd2': 'dddd2', 'd3': [11, 22, 33, 44, { 'd3str': 'd3d3d3', 'd3obj': { 'd3a': '33a', 'd3b': 'bbbbb' } }] } }"Dim jsonObject As JObject = JObject.Parse(jsonString)Dim d1Value As String = jsonObject.SelectToken("d.d1").ToString()Console.WriteLine(d1Value)
    End Sub
    

    在上面的示例中,我们首先定义了一个JSON字符串jsonString,其中包含多级嵌套的JSON数据。

    然后,我们使用JObject.Parse方法将JSON字符串解析为JObject对象。

    接下来,我们使用SelectToken方法并传入路径字符串"d.d1"来获取d.d1的值。最后,我们使用ToString方法将值转换为字符串,并使用Console.WriteLine打印出来。

    通过使用SelectToken方法,您可以方便地获取多级JSON数据,而不需要使用多个Item方法。

  • System.Text.Json如何实现取多级JSON子数据,类似Newtonsoft.Json.SelectToken("d.d1").ToString()
  • System.Text.Json中,您可以使用JsonDocument类和JsonElement类来实现获取多级JSON子数据。以下是一个示例代码:

    Imports System.Text.JsonPublic Sub Main()Dim jsonString As String = "{ 'a': 'abcd', 'b': 3333, 'c': [11, 22, 33], 'd': { 'd1': 'ddddd', 'd2': 'dddd2', 'd3': [11, 22, 33, 44, { 'd3str': 'd3d3d3', 'd3obj': { 'd3a': '33a', 'd3b': 'bbbbb' } }] } }"Dim jsonDocument As JsonDocument = JsonDocument.Parse(jsonString)Dim d1Value As JsonElement = jsonDocument.RootElement.GetProperty("d").GetProperty("d1")Console.WriteLine(d1Value.ToString())
    End Sub
    

    在上面的示例中,我们首先定义了一个JSON字符串jsonString,其中包含多级嵌套的JSON数据。

    然后,我们使用JsonDocument.Parse方法将JSON字符串解析为JsonDocument对象。

    接下来,我们使用RootElement属性获取根元素,并使用GetProperty方法连续获取子属性。在这个例子中,我们使用GetProperty("d")获取d属性,然后再使用GetProperty("d1")获取d1属性。

    最后,我们使用ToString方法将JsonElement对象转换为字符串,并使用Console.WriteLine打印出来。

    通过使用GetProperty方法和JsonElement对象,您可以方便地获取多级JSON子数据,类似于Newtonsoft.Json中的SelectToken方法。

  • System.Text.Json需要多次GetProperty才能获取子数据:GetProperty("d").GetProperty("d1")
    是否可以直接用d.d1这种方式取JSON多级数据,还有没有其他别的JSON组件能实现这种功能
  • System.Text.Json中,没有直接提供类似d.d1这种方式来获取多级JSON数据的功能。您需要使用多次的GetProperty方法来逐级获取子属性。

    如果您希望使用类似d.d1这种方式来获取多级JSON数据,可以考虑使用其他第三方JSON组件,例如Newtonsoft.JsonNewtonsoft.Json提供了SelectToken方法,可以使用类似路径的方式来获取多级JSON数据。

    除了Newtonsoft.Json,还有其他一些第三方JSON组件也提供了类似的功能,例如Json.NETJsonCpp等。您可以根据自己的需求选择适合的JSON组件来处理多级JSON数据。请注意,使用第三方组件可能需要额外的依赖项,并且可能会影响性能和可移植性。

  •  Dim jsonString As String = "{ 'a': 'abcd', 'b': 3333, 'c': [11, 22, 33], 'd': { 'd1': 'ddddd', 'd2': 'dddd2', 'd3': [11, 22, 33, 44, { 'd3str': 'd3d3d3', 'd3obj': { 'd3a': '33a', 'd3b': 'bbbbb' } }] } }"Dim jsonDocument As JsonDocument = JsonDocument.Parse(jsonString)Dim d1Value As JsonElement = jsonDocument.RootElement.GetProperty("d").GetProperty("d1")
    如何获取D.D3[2]的值?
  • System.Text.Json中,要获取D.D3[2]的值,您需要使用多次的GetProperty方法和EnumerateArray方法来逐级获取子属性和数组元素。以下是一个示例代码:

    复制Imports System.Text.JsonPublic Sub Main()Dim jsonString As String = "{ 'a': 'abcd', 'b': 3333, 'c': [11, 22, 33], 'd': { 'd1': 'ddddd', 'd2': 'dddd2', 'd3': [11, 22, 33, 44, { 'd3str': 'd3d3d3', 'd3obj': { 'd3a': '33a', 'd3b': 'bbbbb' } }] } }"Dim jsonDocument As JsonDocument = JsonDocument.Parse(jsonString)Dim d3Value As JsonElement = jsonDocument.RootElement.GetProperty("d").GetProperty("d3")Dim d3Array As JsonArrayEnumerator = d3Value.EnumerateArray()Dim d3Element As JsonElement = NothingFor i As Integer = 0 To 2d3Array.MoveNext()d3Element = d3Array.CurrentNextConsole.WriteLine(d3Element.ToString())
    End Sub
    

    在上面的示例中,我们首先定义了一个JSON字符串jsonString,其中包含多级嵌套的JSON数据。

    然后,我们使用JsonDocument.Parse方法将JSON字符串解析为JsonDocument对象。

    接下来,我们使用GetProperty方法获取D.D3的值,并使用EnumerateArray方法获取D.D3的数组元素。

    然后,我们使用MoveNext方法和Current属性来遍历数组元素,直到达到索引为2的元素。

    最后,我们使用ToString方法将JsonElement对象转换为字符串,并使用Console.WriteLine打印出来。

    通过使用GetProperty方法、EnumerateArray方法和数组遍历,您可以获取D.D3[2]的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/253867.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中小型网络系统总体规划与设计方法

目录 1.基于网络的信息系统基本结构 2.网络需求调研与系统设计原则 3.网络用户调查 4.网络节点地理位置分布情况 5.网络需求详细分析 6.应用概要分析 7.网络工程设计总体目标与设计原则 8.网络结构与拓扑构型设计方法 9.核心层网络结构设计 10.接入核心路由器 11.汇聚…

513. 找树左下角的值 - 力扣(LeetCode)

题目描述 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 题目示例 输入: root [2,1,3] 输出: 1 解题思路 深度优先搜索 使用 depth 记录遍历到的节点的深度,result 记录深度在 depth 的最…

幻兽帕鲁mac可以玩吗?

《幻兽帕鲁》(英文:Palworld)是一款近期在 Steam 爆红的动作冒险生存游戏,游戏设置在一个居住着「帕鲁」的开放世界中,玩家可以战斗并捕捉帕鲁,也能用它们来建造基地、骑乘和战斗。 不过目前《幻兽帕鲁》仅…

Appium使用初体验之参数配置,简单能够运行起来

一、服务器配置 Appium Server配置与Appium Server GUI(可视化客户端)中的配置对应,尤其是二者如果不在同一台机器上,那么就需要配置Appium Server GUI所在机器的IP(Appium Server GUI的HOST也需要配置本机IP&#xf…

Android Studio安装过程遇到SDK无法安装问题解决

首次打开studio遇到该类问题,需要下载SDK文件,后又发现SDK由于是Google源,无法进行正常安装,故转而进行SDK的镜像安装。 一、下载SDK Tools 地址:AndroidDevTools - Android开发工具 Android SDK下载 Android Studio…

macbook电脑如何永久删除app软件?

在使用MacBook的过程中,我们经常会下载各种App来满足日常的工作和娱乐需求。然而,随着时间的积累,这些App不仅占据了宝贵的硬盘空间,还可能拖慢电脑的运行速度。那么,如何有效地管理和删除这些不再需要的App呢&#xf…

C++面试宝典第27题:完全平方数之和

题目 给定正整数 n,找到若干个完全平方数(比如:1、4、9、16、...),使得它们的和等于n。你需要让组成和的完全平方数的个数最少。 示例1: 输入:n = 12 输出:3 解释:12 = 4 + 4 + 4。 示例2: 输入:n = 13 输出:2 解释:13 = 4 + 9。 解析 这道题主要考察应聘者对于…

JVM-运行时数据区程序计数器

运行时数据区 Java虚拟机在运行Java程序过程中管理的内存区域,称之为运行时数据区。《Java虚拟机规范》中规定了每一部分的作用。 程序计数器的定义 程序计数器(Program Counter Register)也叫PC寄存器,每个线程会通过程序计数器…

SpringCloud-Eureka原理分析

Eureka是Netflix开源的一款用于实现服务注册与发现的工具。在微服务架构中,服务的动态注册和发现是必不可少的组成部分,而Eureka正是为了解决这一问题而诞生的。 一、为何需要Eureka 在微服务架构中,服务之间的协同合作和高效通信是至关重要…

网络原理TCP/IP(1)

文章目录 端口号UDP协议 在网络通信中,协议非常重要 协议进行了分层 应用层就是对应着应用程序,是程序员打交道最多的这一层,调用系统提供的网络api写出来的代码都是属于应用层的 应用层有很多现成的协议,但是更多的还是程序员需要…

Redis篇之集群

一、主从复制 1.实现主从作用 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。主节点用来写的操作,从节点用来读操作,并且主节点发生写操作后,会把数据同…

RabbitMQ详解

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应&a…

设计模式理解:单例模式+工厂模式+建设者模式+原型模式

迪米特法则:Law of Demeter, LoD, 最少知识原则LKP 如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。 所以,在运用迪米特…

一文读懂转融通

最近多家公司都在讲解关于转融通要求。今天我们就来详细聊聊! 转融通是一种证券借贷机制,它允许机构投资者在融资融券交易中借入或借出证券。 具体来说,机构投资者可以向券商借入证券,或者将持有的证券借给券商,以扩大…

诺奖经济学家称AI将取代STEM专业工作!Altman:人类无需工作,我给发钱

最近,2010年诺贝尔经济学奖得主,伦敦政治经济学院(LSE)教授Christopher Pissarides公开表态,在不远的未来,传统意义上的「数理化」学科知识和技能,都将会被AI取代。 这位劳动力市场经济学家警告…

mac检查CPU温度和风扇速度软件:Macs Fan Control Pro 1.5.17中文版

Macs Fan Control Pro for Mac是一款专业的电脑风扇控制工具,旨在帮助Mac用户有效控制电脑的风扇速度,提高电脑的运行效率和稳定性。 软件下载:Macs Fan Control Pro 1.5.17中文版 该软件支持多种风扇控制模式和预设方案,用户可以…

Vue源码系列讲解——虚拟DOM篇【一】(Vue中的虚拟DOM)

目录 1. 前言 2. 虚拟DOM简介 2.1什么是虚拟DOM? 2.2为什么要有虚拟DOM? 3. Vue中的虚拟DOM 3.1 VNode类 3.2 VNode的类型 3.2.1 注释节点 3.2.2 文本节点 3.2.3 克隆节点 3.2.4 元素节点 3.2.5 组件节点 3.2.6 函数式组件节点 3.2.7 小结 3…

使用pygame生成红包封面

import pygame import sys# 初始化pygame pygame.init()# 设置红包封面尺寸 size width, height 640, 960 screen_color (255, 0, 0) # 红色背景# 创建窗口 screen pygame.display.set_mode(size) pygame.display.set_caption(红包封面)# 加载龙形图片 dragon_image pygam…

运维自动化bingo前端

项目目录结构介绍 项目创建完成之后,我们会看到bingo_web项目其实是一个文件夹,我们进入到文件夹内部就会发现一些目录和文件,我们简单回顾一下里面的部分核心目录与文件。 ├─node_modules/ # node的包目录,项目运行的依赖包…

【C++】模板入门教程

C模板是C编程中的重要利器,能够大大提高编码效率。函数模板和类模板是模板编程中的两个重要概念,它们允许我们编写独立于数据类型的通用代码。 本文将深入介绍函数模板和类模板的使用方法,以及它们的实现原理、匹配规则和注意事项&#xff0…