循环 JSON 数组对象的内容
Loop the contents of a JSON array object
我是 Vb.net 的新手。具有如下所示的 JSON 字符串,我尝试使用 JsonConvert.DeserializeObject()
.
将 JSON 反序列化为对象
我正在尝试在给定 JSON 中的 Content
对象内循环值以获取其值。
我尝试使用 for
循环,但我无法获得准确的值。
Dim result As String = {
"status": "0001",
"Result": {
"IsError": "0",
"Data": {
"Type": "a",
"Header": [
"v1",
"v2",
"v3",
"v4",
"v5"
],
"Content": [
[
"001",
"Raj",
"1",
"N",
""
],
[
"002",
"Vignesh",
"1",
"N",
""
],
[
"778",
"Ramesh",
"1",
"N",
""
],
[
"792",
"Suresh",
"1",
"N",
""
],
[
"703",
"Karthick",
"1",
"N",
""
],
[
"1247",
"Ram",
"1",
"N",
""
]
]
}
}
}
Dim jsonResult2 = JsonConvert.DeserializeObject(Of Dictionary(Of String, Object))(result)
如果你只是想反序列化Content数组,你可以用JToken.Parse()
解析JSON,然后反序列化到List(Of String())
那个部分。
Dim jsonResult = JToken.Parse(result)
Dim content = JsonConvert.DeserializeObject(Of List(Of String()))(
jsonResult("Result")("Data")("Content").ToString()
)
或者,您可以使用 class 模型反序列化整个 JSON,然后将每个对象作为标准 .Net 属性 值访问。
Public Class StatusResultsRoot
<JsonProperty("status")>
Public Property Status As String
Public Property Result As Result
End Class
Public Partial Class Result
Public Property IsError As String
Public Property Data As Data
End Class
Public Partial Class Data
<JsonProperty("Type")>
Public Property DataType As String
Public Property Header As List(Of String)
Public Property Content As List(Of String())
End Class
'[...]
Dim statusResult = JsonConvert.DeserializeObject(Of StatusResultsRoot)(result)
Content
列表是
Dim content As List(Of String()) = statusResult.Result.Data.Content
' Loop the List of String(), print the combined array of strings
For Each stringArray As String() In content
Console.WriteLine(String.Join(", ", stringArray))
Next
如果你真的想嵌入一个JSON作为一个字符串,你可以通过用JSON括起来来使用XML element literal, defining an XElement <node> ... </node>
个标记。
然后您可以按原样粘贴 JSON(无需双引号)。
JSON 是 XElement 的第一个节点的字符串表示形式:即 [XElement].FirstNode.ToString()
。例如:
Dim xResult = <json> {
"status": "0001",
"Result": {
"IsError": "0",
"Data": {
' [... other content ...]
}
}
} </json>
Dim json As String = xResult.FirstNode.ToString()
您不能在 C# 中执行此操作。
VB 中的字符串必须以“.
开头和结尾
内部双引号应替换为“”。
所以一个合适的字符串(在代码中分配时)应该是这样的:
Dim result as string = "{
""status"": ""0001"",
...
}
"
我是 Vb.net 的新手。具有如下所示的 JSON 字符串,我尝试使用 JsonConvert.DeserializeObject()
.
将 JSON 反序列化为对象
我正在尝试在给定 JSON 中的 Content
对象内循环值以获取其值。
我尝试使用 for
循环,但我无法获得准确的值。
Dim result As String = {
"status": "0001",
"Result": {
"IsError": "0",
"Data": {
"Type": "a",
"Header": [
"v1",
"v2",
"v3",
"v4",
"v5"
],
"Content": [
[
"001",
"Raj",
"1",
"N",
""
],
[
"002",
"Vignesh",
"1",
"N",
""
],
[
"778",
"Ramesh",
"1",
"N",
""
],
[
"792",
"Suresh",
"1",
"N",
""
],
[
"703",
"Karthick",
"1",
"N",
""
],
[
"1247",
"Ram",
"1",
"N",
""
]
]
}
}
}
Dim jsonResult2 = JsonConvert.DeserializeObject(Of Dictionary(Of String, Object))(result)
如果你只是想反序列化Content数组,你可以用JToken.Parse()
解析JSON,然后反序列化到List(Of String())
那个部分。
Dim jsonResult = JToken.Parse(result)
Dim content = JsonConvert.DeserializeObject(Of List(Of String()))(
jsonResult("Result")("Data")("Content").ToString()
)
或者,您可以使用 class 模型反序列化整个 JSON,然后将每个对象作为标准 .Net 属性 值访问。
Public Class StatusResultsRoot
<JsonProperty("status")>
Public Property Status As String
Public Property Result As Result
End Class
Public Partial Class Result
Public Property IsError As String
Public Property Data As Data
End Class
Public Partial Class Data
<JsonProperty("Type")>
Public Property DataType As String
Public Property Header As List(Of String)
Public Property Content As List(Of String())
End Class
'[...]
Dim statusResult = JsonConvert.DeserializeObject(Of StatusResultsRoot)(result)
Content
列表是
Dim content As List(Of String()) = statusResult.Result.Data.Content
' Loop the List of String(), print the combined array of strings
For Each stringArray As String() In content
Console.WriteLine(String.Join(", ", stringArray))
Next
如果你真的想嵌入一个JSON作为一个字符串,你可以通过用JSON括起来来使用XML element literal, defining an XElement <node> ... </node>
个标记。
然后您可以按原样粘贴 JSON(无需双引号)。
JSON 是 XElement 的第一个节点的字符串表示形式:即 [XElement].FirstNode.ToString()
。例如:
Dim xResult = <json> {
"status": "0001",
"Result": {
"IsError": "0",
"Data": {
' [... other content ...]
}
}
} </json>
Dim json As String = xResult.FirstNode.ToString()
您不能在 C# 中执行此操作。
VB 中的字符串必须以“.
开头和结尾内部双引号应替换为“”。
所以一个合适的字符串(在代码中分配时)应该是这样的:
Dim result as string = "{
""status"": ""0001"",
...
}
"