.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.Json
。Newtonsoft.Json
提供了SelectToken
方法,可以使用类似路径的方式来获取多级JSON数据。除了
Newtonsoft.Json
,还有其他一些第三方JSON组件也提供了类似的功能,例如Json.NET
、JsonCpp
等。您可以根据自己的需求选择适合的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]
的值。