【问题标题】:How to extract array element without key?如何在没有键的情况下提取数组元素?
【发布时间】:2021-12-05 22:04:21
【问题描述】:

我有一个如下的 json。我想要一个 json 路径表达式来检查 [e3] 是否存在于下面的 json 中。有人可以帮忙吗?

{
    "status": "ok",
    "error": [
        "[e1]",
        "[e2]",
        "[e3]",
        "[e4]"
    ]
}

【问题讨论】:

  • yourObj['error']['e3'] !== undefined
  • 我试过了,没用。我试过jsonpath.herokuapp.com
  • 基于此答案stackoverflow.com/a/52977857/1065197。我使用$[?(@.error[?(@ == '[e3]')] != [])] 和 Jayway JsonPath 评估器进行了测试。
  • 是的,路易吉。这样可行。如果存在 [e3],它将返回整个 json。有没有办法返回“是”或更具体的东西?返回 [e3] 本身也可以。谢谢。
  • @LuiggiMendoza Jsonpath 并不总是返回 json。如果路径是确定的,您实际上可以将其转换为预期的返回类型。 $.status$.error[2] 返回字符串

标签: java json jsonpath jayway


【解决方案1】:

下面的JSONPath 将返回一个包含一个元素的列表。 Indefinite 路径总是返回一个列表。如果路径包含表达式 - ?(<expression>),则路径为 indefinite。参考What is Returned When?

$.error[?(@ == '[e3]')]

【讨论】:

  • List<String> errorCodes = JsonPath.read(json, "$.error[?(@ == '[e3]')]");
  • 这正是我想要的。谢谢你,Akshay。
猜你喜欢
  • 1970-01-01
  • 2014-06-22
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 2020-11-23
  • 2015-09-16
  • 1970-01-01
  • 2014-11-10
相关资源
最近更新 更多