【问题标题】:JSON-Path only returns single character instead of full valueJSON-Path 只返回单个字符而不是完整值
【发布时间】:2019-05-15 07:54:27
【问题描述】:

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

输入 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

【问题讨论】:

    标签: jsonpath json-path-expression


    【解决方案1】:

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

    请看这里:https://github.com/json-path/JsonPath/issues/272https://github.com/json-path/JsonPath/issues/375

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

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

    无论如何,你不是第一个遇到这个问题的人,请看:

    【讨论】:

    • 谢谢您的详细解答!不幸的是,大多数讨论的解决方案都使用通过 java 进行的操作。但我需要一个 JSONPath 表达式,因为我想使用 shields.io 来动态创建徽章图标。见shields.io/#dynamic-badge
    • NP - 如果你能获得标准 v0.9.1 的解析器,你可以使用它。
    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2014-11-15
    • 2018-11-16
    相关资源
    最近更新 更多