如何在JSONPath中基于多个候选名称选择JToken?

时间:2016-02-26 01:36:54

标签: json json.net jsonpath

我有一个像这样的JObject:

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

它也可能是以下形式:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

但是,我们可以使用union运算符来估算我们需要的东西。基于JSONPath documentation

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提到union运算符可能在不同的实现之间存在一些错误或细微差别。

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

我已经尝试了['name1','name2']['value'],除了Nebhale的所有实现都能正确解析我需要的东西。所以我想我的原始问题有一个解决方案,但它有点特定于实现,所以请首先完全测试你自己的代码,以确保这个JSONPath和union运算符能在你的代码库中运行。