当前位置: 首页 > news >正文

.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]的值。

相关文章:

  • svg 进阶
  • 掌握C++中的动态数据:深入解析list的力量与灵活性
  • mybatis-plus的批量修改源码遇到的问题
  • 什么是IDE,新手用哪个IDE比较好
  • 【工具】Android|Android Studio 长颈鹿版本安装下载使用详解
  • HLS 三角函数报错:undefined reference to ‘cordic_apfixed::circ_table_arctan_128‘
  • Python爬虫http基本原理#2
  • 【AI绘画--七夕篇】使用Stable Diffusion的艺术二维码完全生成攻略
  • 即席查询框架怎么选?
  • 13.JS实现深拷贝的方式
  • 【Linux】SystemV IPC
  • WPF控件-ItemsControl
  • Elasticsearch 安装和配置脚本文档
  • 【C语言】案例:输出n位水仙花数
  • Python学习路线 - Python高阶技巧 - PySpark案例实战
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 10个确保微服务与容器安全的最佳实践
  • angular2 简述
  • CSS居中完全指南——构建CSS居中决策树
  • Docker: 容器互访的三种方式
  • Flex布局到底解决了什么问题
  • Hibernate【inverse和cascade属性】知识要点
  • httpie使用详解
  • Java到底能干嘛?
  • PHP那些事儿
  • Promise初体验
  • python3 使用 asyncio 代替线程
  • React16时代,该用什么姿势写 React ?
  • vue 配置sass、scss全局变量
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 如何设计一个微型分布式架构?
  • 一个JAVA程序员成长之路分享
  • 怎样选择前端框架
  • AI算硅基生命吗,为什么?
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 正则表达式-基础知识Review
  • #LLM入门|Prompt#3.3_存储_Memory
  • #mysql 8.0 踩坑日记
  • #Z0458. 树的中心2
  • #传输# #传输数据判断#
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (TOJ2804)Even? Odd?
  • (vue)页面文件上传获取:action地址
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (蓝桥杯每日一题)love
  • (四)JPA - JQPL 实现增删改查
  • (算法设计与分析)第一章算法概述-习题
  • (一)RocketMQ初步认识
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转) Face-Resources
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)平衡树