JsonPath 与 Newtonsoft.JSON

Sha*_*iZy 5 json json.net jsonpath

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

我的 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"
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我的任务是使用 Newtonsoft.JSON 获取语言为“de”的所有值。我目前的做法是:

JsonObject.SelectTokens("typeOfHair.value.values[?(@.language == 'de')].value").ToList()
Run Code Online (Sandbox Code Playgroud)

有人可以帮我弄这个吗?

亲切的问候

dbc*_*dbc 6

你们非常接近。您需要使用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();
Run Code Online (Sandbox Code Playgroud)

并且,结果是:

["TrockenesHaar","JedenHaartyp"]
Run Code Online (Sandbox Code Playgroud)

小提琴样本。