我有一个简单的
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”,我希望使用someach的foreach获取每个中“locate”的值
这是可能吗 ?使用SelectToken?
谢谢
尝试这个:
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