Как выбрать JToken на основе нескольких имен кандидатов в JSONPath?
У меня есть JObject, как это:
{
name1: {
value [
...
]
}
}
Это также может быть в форме:
{
name2: {
value [
...
]
}
}
Поэтому я пытаюсь использовать один JSONPath для выбора JArray value
из. Есть ли способ сделать что-то подобное?
$['name1' or 'name2']['value']
1 ответ
Основываясь на ответах на эти два вопроса SO: оператор OR в JSONPath? и JsonPath и оператор на массиве, кажется AND
а также OR
операторы еще не полностью поддерживаются в JSONPath.
Однако мы можем использовать оператор объединения, чтобы приблизить то, что нам нужно. Основываясь на документации JSONPath,
Union operator in XPath results in a combination of node sets.
JSONPath allows alternate names or array indices as a set.
Кажется, это то, что нам нужно, но тем не менее, оператор JsonPath AND на массиве отметил, что оператор объединения может иметь некоторые ошибки или тонкие различия между различными реализациями.
Похоже, я выполнил свою собственную проверку здесь: http://jsonpath.herokuapp.com/.
я пробовал ['name1','name2']['value']
и все, кроме реализации Nebhale, правильно анализирует то, что мне нужно. Так что я думаю, что есть решение моей исходной проблемы, но оно немного зависит от реализации, поэтому сначала полностью протестируйте свой собственный код, чтобы убедиться, что этот оператор JSONPath и union будет работать в вашей кодовой базе.