0

我有一个来自 Web 服务的 JSON 响应,看起来像这样:

[
   {
      "id":4,
      "sourceID":null,
      "subject":"SomeSubjectOne",
      "category":"SomeCategoryTwo",
      "impact":null,
      "status":"completed"  
   },
   {
      "id":12,
      "sourceID":null,
      "subject":"SomeSubjectTwo",
      "category":"SomeCategoryTwo",
      "impact":null,
      "status":"assigned"
   }
]

我需要做的是使用 JSONPATH 查询从所有实体中提取主题。

我怎样才能得到这些结果:

  1. 第一项的主题 - SomeSubjectOne
  2. 过滤来自所有实体的特定主题值(例如 SomeSubjectTwo)
  3. 从所有实体获取主题
4

1 回答 1

0

Goessner 的原始 JSONPath 文章是一个很好的参考点,所有实现或多或少都遵循建议的查询语法。但是,Jayway JsonPath/Java、JSONPath-Plus/JavaScript、flow-jsonpath/PHP 等实现在某些领域的行为可能略有不同。这就是为什么了解您实际使用的实现非常重要的原因。

  1. 第一项的主题

    只需使用索引来选择所需的数组元素。

    $.[0].subject
    

    回报:

一些主题一

  1. 具体主题价值

    首先,选择任何元素..,检查具有主题的元素[?(@.subject]== '..'用于比较。

    $..[?(@.subject == 'SomeSubjectTwo')]
    

退货

[ {“id”:12,“sourceID”:null,“subject”:“SomeSubjectTwo”,“category”:“SomeCategoryTwo”,“impact”:null,“status”:“assigned”}]*

  1. 获取所有科目

    $.[*].subject
    

    或者干脆

    $..subject
    

退货

[“SomeSubjectOne”,“SomeSubjectTwo”]

于 2020-10-12T19:25:02.140 回答