1

我在从特定过滤器选择中选择完整值时遇到问题。

输入 JSON(来自 github-api 响应):

[
  {
    "name": "V2.X.X",
    "prerelease": true
  },
  {
    "name": "2.0.0",
    "prerelease": false
  },
  {
    "name": "1.9.0",
    "prerelease": false
  }
]

JSON路径:

$.[?(@.prerelease==false)].name

结果:

[
  "2.0.0",
  "1.9.0"
]

我只需要第一个条目(“2.0.0”),所以我尝试了这个:

JSON路径:

$.[?(@.prerelease==false)].name[0]

但结果是:

[
  "2",
  "1"
]

知道如何选择完整的第一个条目吗?

我在https://jsonpath.com/上测试了 JSONPatch

BR

apiman

4

1 回答 1

3

恐怕这是 jsonpath 的一个已知问题。

请参阅此处:https ://github.com/json-path/JsonPath/issues/272和https://github.com/json-path/JsonPath/issues/375

不幸的是,这看起来不会很快消失——这个问题是在 2.5 年前提出的。令人讨厌的是,它$.[?(@.prerelease==false)].name[0]曾经在 jsonpath 的 0.9.1 版本中工作,然后在某个时候被删除。

建议的当前解决方法是将过滤表达式的项目读入内存集合,并在返回时选择第一个。

无论如何,您不是第一个遇到此问题的人,请参阅:

于 2019-05-15T08:39:05.477 回答