Как выбрать JToken на основе нескольких кандидатов имени в JSONPath?

У меня есть такой JObject:

{
  name1: {
    value [
    ...
    ]
  }
}

Также может быть в виде:

{
  name2: {
    value [
    ...
    ]
  }
}

Итак, я пытаюсь использовать один JSONPath, чтобы выбрать выход JArray value. Есть ли способ сделать что-то подобное?

$['name1' or 'name2']['value']

person derekhh    schedule 26.02.2016    source источник


Ответы (1)


Основываясь на ответах на эти два вопроса SO: оператор OR в JSONPath? и JsonPath AND Operator on Array, кажется, операторы 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 Operator on Array упомянул союз оператор может иметь некоторые ошибки или тонкие различия между различными реализациями.

Аналогично, я выполнил собственную проверку здесь: http://jsonpath.herokuapp.com/.

Я пробовал ['name1','name2']['value'] и все, кроме реализации Nebhale, правильно анализирует то, что мне нужно. Итак, я думаю, что есть решение моей первоначальной проблемы, но оно немного зависит от реализации, поэтому, пожалуйста, сначала полностью протестируйте свой собственный код, чтобы убедиться, что этот JSONPath и оператор объединения будут работать в вашей кодовой базе.

person derekhh    schedule 26.02.2016