我尝试了将近一个小时的不同方法,但我不明白;(

我的 JSON 对象是这样的:

"typeOfHair": {
    "value": [
        {
            "code": "Dry Hair",
            "values": [
                {
                    "value": "DryHair",
                    "language": "en"
                },
                {
                    "value": "TrockenesHaar",
                    "language": "de"
                }
            ]
        },
        {
            "code": "Any Type of Hair",
            "values": [
                {
                    "value": "AnyTypeOfHair",
                    "language": "en"
                },
                {
                    "value": "JedenHaartyp",
                    "language": "de"
                }
            ]
        }
    ]
}

我的任务是使用 Newtonsoft.JSON 获取语言为“de”的所有值。
我目前的做法是:
JsonObject.SelectTokens("typeOfHair.value.values[?(@.language == 'de')].value").ToList()

有人可以帮我弄这个吗?

亲切的问候

最佳答案

你很亲近。您需要使用 JsonPATH 通配符运算符 value 来考虑外部 typeOfHair.value[] 数组 [*] :

var values = JsonObject.SelectTokens("typeOfHair.value[*].values[?(@.language == 'de')].value")
    // Convert from JValue to string
    .Select(v => (string)v)
    // Save in a list
    .ToList();

而且,结果是:
["TrockenesHaar","JedenHaartyp"]

示例 fiddle

关于带有 Newtonsoft.JSON 的 JsonPath,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43458453/

10-11 01:16