Net:在不知道元素名称的情况下使用SelectToken获取值



我有一个简单的JSON文件,我需要它来获取令牌的值,我尝试过使用SelectToken,但问题是元素的名称是动态的。这是我的JSON文件

{
    "name": "testdata",
    "items": {
        "myItemName": {
            "located": true
        }
    }
}

我需要得到"located"(上面)的值,如果你看到元素名称"myItemName",这是动态的,不是固定的。所以我确实尝试过使用SelectToken的点号。

我想出了这样的办法,但没有奏效——问题是[0]

        bool located = (bool)jsonObject.SelectToken("items.[0].located");

在Items中,可以有多个动态元素,因此例如,这是有效的。

  {
        "name": "testdata",
        "items": {
            "myItemName": {
                "located": true
            },
            "myOtherItemName": {
                "located": true
            }
        }
    }

因此,从上面看,你可以看到我有"myItemName"one_answers"myOtherItemName",我想使用某种foreach 来获得每个项目中"located"的值

这有可能吗?使用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

相关内容

  • 没有找到相关文章

最新更新