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

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

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

    Imports Newtonsoft.Json
    Imports Newtonsoft.Json.Linq
    
    Public 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.Json
    
    Public 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.Json
    
    Public 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 = Nothing
    
        For i As Integer = 0 To 2
            d3Array.MoveNext()
            d3Element = d3Array.Current
        Next
    
        Console.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.kler.cn/a/231985.html

相关文章:

  • HOW - PPT 制作系列(一)
  • 从建立TRUST到实现FAIR:可持续海洋经济的数据管理
  • 针对股票评论的情感分类器
  • 云速搭助力用友 BIP 平台快速接入阿里云产品
  • ChromeDriver 官方下载地址_测试自动化浏览器驱动
  • centos7 升级openssl 与升级openssh 安装卸载 telnet-server
  • 水题中的稀奇古怪trick合集
  • MySQL的MVCC机制
  • Android studio打开md无法显示md渲染问题
  • Python并发
  • 图数据库 之 Neo4j - 背景介绍(1)
  • Yii特性
  • 第九个知识点:内部对象
  • uniapp中根据图片路径(网络或本地路径)转换为base64
  • 数据结构(C语言)代码实现(八)——顺序栈实现数值转换行编辑程序汉诺塔
  • 深度学习(生成式模型)—— Consistency Models
  • 2.5作业
  • 51单片机精进之路-1点亮led灯
  • c#通过反射完成对象自动映射
  • 《Git 简易速速上手小册》第10章:未来趋势与扩展阅读(2024 最新版)
  • 【Unity】QFramework通用背包系统优化:TipPanel优化
  • 服务器与电脑的区别?
  • 座位预约|座位预约小程序|基于微信小程序的图书馆自习室座位预约管理系统设计与实现(源码+数据库+文档)
  • linux centos安装LibreOffice
  • IS-IS P2P网路类型 地址不在同一子网建立邻居关系
  • 踩坑实录(Third Day)