如何 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 似乎尚未完全支持 AND
和 OR
运算符。
不过,我们可以使用联合运算符来近似我们所需要的。基于 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 和联合运算符可以在你的代码库中工作。
我有一个像这样的 JObject:
{
name1: {
value [
...
]
}
}
也可以是这样的形式:
{
name2: {
value [
...
]
}
}
所以我尝试使用单个 JSONPath 来 select JArray value
输出。有没有办法做这样的事情?
$['name1' or 'name2']['value']
根据对这两个 SO 问题的回答:OR operator in JSONPath? and AND
和 OR
运算符。
不过,我们可以使用联合运算符来近似我们所需要的。基于 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 和联合运算符可以在你的代码库中工作。