当前位置: 首页 > 知识库问答 >
问题:

使用JSONPath从web服务JSON响应中提取值

杨波娃
2023-03-14

我有一个来自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. 来自第一项的主题-某个SubjectOne
  2. 过滤来自所有实体的特定主题值(例如某个主题2)
  3. 从所有实体获取对象

共有1个答案

陆昊
2023-03-14

Goessner的orinial JSONPath文章是一个很好的参考点,所有的实现或多或少都遵循建议的查询语法。然而,像Jayway JsonPath/Java、JSONPath-Plus/JavaScript、flow-jsonpath/PHP这样的实现在某些方面可能会有一点不同。这就是为什么知道你实际使用的是什么实现是很重要的。

>

  • 第一项的主题

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

    $.[0].subject
    

    回报:

    某个主题

    特定主题价值

    首先,查找任何元素...,检查具有主题[?( @.subject]元素,并使用='...进行比较。

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

    回报

    [{"id": 12,"Source ceID": null,"subject":"一些主题","类别":"一些类别","影响": null,"状态":"分配"}]*

    获取所有科目

    $.[*].subject
    

    或者干脆

    $..subject
    

    回报

    [“SomeSubjectOne”、“SomeSubjectTwo”]

  •  类似资料:
    • 问题内容: 我有以下方法: 在这里,我将ResponseFormat属性设置为json,但仍将其作为XML返回。 我想使用此asmx服务进行json格式化有什么想法吗? 问题答案: 我遇到了同样的问题,并包含以下代码以使其正常工作。 更新: 要获得纯json格式,您可以使用如下的javascript序列化程序。 但是,这适用于复杂类型,但字符串没有任何区别。

    • 我需要从从 Rest Assured 建模请求返回的 JSON 响应数据中获取两个值: 这抛出和 获取这些的正确、最好的方法是什么?我知道我可以链接关闭请求,但不确定如何获取

    • 我正在使用ApacheJMeter发出HTTP请求。 响应格式如下: HTTP/1.1 100继续 HTTP/1.1 200 OK x-powering-by: Express access-Control-low-source:*access-Control-low-method: HEAD, POST, PUT, GET, OPTIONS, DELETE access-Control-low-

    • 我有一个JSON响应,希望从响应中提取值列表,例如id的所有值。 我已经尝试了下面的代码,但无法实现,但它只是打印id的第一个值,即4。 我是初学者,我也不确定我们是否能达到同样的效果。任何帮助都将不胜感激。提前谢谢。

    • 问题内容: 首先,我将自由地让自己成为一个笨拙的文科专家,他完全可以自学此脚本。就是说,我正在尝试使用以下代码从USGS水数据服务获取值: 尽管我找到了一些有关如何从JSON响应中提取所需值的教程,但大多数教程都非常简单。我遇到的困难是从该服务返回的看起来非常复杂的响应中提取出来的。查看响应,我可以看到我想要的是来自两个不同部分的值和一个时间值。因此,我可以查看响应并查看所需的内容,但我一生无法解