如何从VB.net中JSON键值对中的特定键获取字符串形式的值?
我从一个API HTTP get请求中获得一个JSON文件(大约1300行)。下面是一个小示例摘录:如何从VB.net中JSON键值对中的特定键获取字符串形式的值?,.net,json,vb.net,visual-studio,key-value,.net,Json,Vb.net,Visual Studio,Key Value,我从一个API HTTP get请求中获得一个JSON文件(大约1300行)。下面是一个小示例摘录: { "platformId": 3, "platformName": "pc", "platformNameLong": "PC" } 我使用此数据并将其转换为对象(源是API请求的结果): , 及 在下面的示例中,它可以工作并允许我稍后使用这个对象链接 Label1.Content = Data.platformNameLong 我现在得到了这样一个JS
{
"platformId": 3,
"platformName": "pc",
"platformNameLong": "PC"
}
我使用此数据并将其转换为对象(源是API请求的结果):
,
及
在下面的示例中,它可以工作并允许我稍后使用这个对象链接
Label1.Content = Data.platformNameLong
我现在得到了这样一个JSON部分:
{
"lifeTimeStats": [
{
"key": "Score",
"value": "7,919,327"
},
{
"key": "Matches Played",
"value": "20105"
]
}
我如何才能从一个特定的键(在JSON的值键对中)获取值到我的对象中
(或作为字符串值)
注意:JSON中的一些标签与值键部分中的键具有相同的名称;有没有办法只获取“lifeTimeStats”中键的值
示例:如果我想在“key”:“Matches Played”的位置获取“value”,在本例中是“20105”,该怎么办?执行以下类似的操作(请用json变量替换serializedJsonString): 选项1:
Dim jsonObject为Newtonsoft.Json.Linq.JObject=Newtonsoft.Json.Linq.JObject.Parse(serializedJsonString)
将jsonArray设置为JArray=jsonObject(“lifeTimeStats”)
如果jsonArray不是什么都不是
对于jsonArray中的每个o作为JObject。子对象(属于JObject)()
如果是o(“key”).ToString()键,则继续
Console.WriteLine(o(“value”).ToString()
退出
下一个
如果结束
选项#2:使用前面提到的SelectToken
Dim jsonObject为Newtonsoft.Json.Linq.JObject=Newtonsoft.Json.Linq.JObject.Parse(serializedJsonString)
将jsonArray设置为JArray=jsonObject(“lifeTimeStats”)
如果jsonArray不是什么都不是
对于jsonArray中作为JObject的每个项目
如果item.SelectToken(“key”).ToString key,则继续
Console.WriteLine(item.SelectToken(“value”).ToString)
退出
下一个
如果结束
执行如下操作(请用json变量替换serializedJsonString):
选项1:
Dim jsonObject为Newtonsoft.Json.Linq.JObject=Newtonsoft.Json.Linq.JObject.Parse(serializedJsonString)
将jsonArray设置为JArray=jsonObject(“lifeTimeStats”)
如果jsonArray不是什么都不是
对于jsonArray中的每个o作为JObject。子对象(属于JObject)()
如果是o(“key”).ToString()键,则继续
Console.WriteLine(o(“value”).ToString()
退出
下一个
如果结束
选项#2:使用前面提到的SelectToken
Dim jsonObject为Newtonsoft.Json.Linq.JObject=Newtonsoft.Json.Linq.JObject.Parse(serializedJsonString)
将jsonArray设置为JArray=jsonObject(“lifeTimeStats”)
如果jsonArray不是什么都不是
对于jsonArray中作为JObject的每个项目
如果item.SelectToken(“key”).ToString key,则继续
Console.WriteLine(item.SelectToken(“value”).ToString)
退出
下一个
如果结束
YourSomething=Jobject.Parse(YourJSON)(“platformId”)会得到一个3@CruleD但是这也适用于键值JSON部分吗?@Jul79能否请您使用示例输入键和您的帖子的预期输出更新您的帖子,以便帮助我们提供工作答案。然后使用(“lifeTimeStats”)(x)(“key”)和(“lifeTimeStats”)(x)进行更新(“value”),其中xis是数组的索引。@sam Done:“如果我想在“key”:“Matches Played”,在本例中是“20105”?“yoursothing=Jobject.Parse(YourJSON)(“platformId”)中获取“value”,该怎么办你会得到一个3@CruleD但是这也适用于键值JSON部分吗?@Jul79能否请您使用示例输入键和您的帖子的预期输出更新帖子,以便帮助我们提供工作答案。然后使用(“lifeTimeStats”)(x)(“key”)和(“lifeTimeStats”)(x)(“value”),其中数组的xis索引。@sam Done:如果我想在“键”处获取“值”:“播放的比赛”,在本例中为“20105”,该怎么办
Public Class Statistics
Public Property platformId As Integer
Public Property platformName As String
Public Property platformNameLong As String
End Class
Label1.Content = Data.platformNameLong
{
"lifeTimeStats": [
{
"key": "Score",
"value": "7,919,327"
},
{
"key": "Matches Played",
"value": "20105"
]
}
Dim jsonObject As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse(serializedJsonString)
Dim jsonArray As JArray = jsonObject("lifeTimeStats")
If jsonArray IsNot Nothing Then
For Each o As JObject In jsonArray.Children(Of JObject)()
If o("key").ToString() <> key Then Continue For
Console.WriteLine(o("value").ToString())
Exit For
Next
End If
Dim jsonObject As Newtonsoft.Json.Linq.JObject = Newtonsoft.Json.Linq.JObject.Parse(serializedJsonString)
Dim jsonArray As JArray = jsonObject("lifeTimeStats")
If jsonArray IsNot Nothing Then
For Each item As JObject In jsonArray
If item.SelectToken("key").ToString <> key Then Continue For
Console.WriteLine(item.SelectToken("value").ToString)
Exit For
Next
End If