如何 select 基于 JSONPath 中的多个候选名称的 JToken?

How to select JToken based on multiple name candidates in JSONPath?

我有一个像这样的 JObject:

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

也可以是这样的形式:

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

所以我尝试使用单个 JSONPath 来 select JArray value 输出。有没有办法做这样的事情?

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

根据对这两个 SO 问题的回答:OR operator in JSONPath? and ,JSONPath 似乎尚未完全支持 ANDOR 运算符。

不过,我们可以使用联合运算符来近似我们所需要的。基于 JSONPath documentation,

Union operator in XPath results in a combination of node sets.
JSONPath allows alternate names or array indices as a set.

这似乎是我们所需要的,但是, 提到联合运算符在不同的实现之间可能存在一些错误或细微差别。

同样的,我在这里进行了自己的验证:http://jsonpath.herokuapp.com/

我已经尝试 ['name1','name2']['value'],除了 Nebhale 的实现之外,其他所有的都正确地解析了我需要的东西。所以我想我原来的问题有一个解决方案,但它有点特定于实现,所以请先全面测试你自己的代码,以确保这个 JSONPath 和联合运算符可以在你的代码库中工作。