我有一个简单的JSON文件,我需要获取令牌的值,我尝试使用SelectToken,但问题是元素的名称是动态的。这是我的JSON文件
{
"name": "testdata",
"items": {
"myItemName": {
"located": true
}
}
}
我需要获取“locate”的值(上图),如果你看到元素名称“myItemName”,这是动态的而不是固定的。所以我尝试使用SelectToken的点符号。
我想出了类似的东西,但它没有用 - 问题是[0]
bool located = (bool)jsonObject.SelectToken("items.[0].located");
在Items中,可以有多个动态元素,例如,这是有效的。
{
"name": "testdata",
"items": {
"myItemName": {
"located": true
},
"myOtherItemName": {
"located": true
}
}
}
所以看上面,你可以看到我有“myItemName”和“myOtherItemName”,我想使用foreach的foreach获取每个中“locate”的值
这一切都可能吗?使用SelectToken?
由于
答案 0 :(得分:5)
试试这个:
string json = @"
{
""name"": ""testdata"",
""items"": {
""myItemName"": {
""located"": true
},
""myOtherItemName"": {
""located"": true
}
}
}";
JObject jsonObject = JObject.Parse(json);
foreach (JProperty prop in jsonObject.SelectToken("items"))
{
string name = prop.Name;
bool value = (bool)prop.Value.SelectToken("located");
Console.WriteLine(name + " = " + value);
}
输出:
myItemName = True
myOtherItemName = True