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

放心java中使用JSONpath来提取数组中的数据

阴永福
2023-03-14

函数包含API,我可以在其中获取JSON格式的值。但我想获取JSON中存在的确切ID=2如何使用JavaJSON路径获取该数据。我必须使用maven依赖项。该函数包含API,我可以在其中获取JSON格式的值。但我想获取JSON中存在的确切ID=2如何使用JavaJSON路径获取该数据。我必须使用maven依赖项。


    <dependency>
       <groupId>com.jayway.jsonpath</groupId>
       <artifactId>json-path</artifactId>
       <version>2.4.0</version>
   </dependency>

 

     void get_extract_response_body() {
          //Specify Base URL
          
          RestAssured.baseURI="https://reqres.in/api";
          
          //Request object
          RequestSpecification httpRequest=RestAssured.given(); 
          //Response Object
          Response response=httpRequest.request(Method.GET,"/unknown");
          
          String responseBody= response.getBody().asString();
          System.out.println(responseBody);
          
          //Print Response in console window
          JsonPath jsonpath= response.jsonPath(); 
          
      System.out.println(jsonpath.get("data[0]."));
      
      
          /*
           * String id=jsonpath.get("$.data[1].id"); System.out.println(id);
           */
          
          
          
      }


  

   {
       "page": 1,
       "per_page": 6,
       "total": 12,
       "total_pages": 2,
       "data": [
           {
               "id": 1,
               "name": "cerulean",
               "year": 2000,
               "color": "#98B2D1",
               "pantone_value": "15-4020"
           },
           {
               "id": 2,
               "name": "fuchsia rose",
               "year": 2001,
               "color": "#C74375",
               "pantone_value": "17-2031"
           },
           {
               "id": 3,
               "name": "true red",
               "year": 2002,
               "color": "#BF1932",
               "pantone_value": "19-1664"
           },
           {
               "id": 4,
               "name": "aqua sky",
               "year": 2003,
               "color": "#7BC4C4",
               "pantone_value": "14-4811"
           },
           {
               "id": 5,
               "name": "tigerlily",
               "year": 2004,
               "color": "#E2583E",
               "pantone_value": "17-1456"
           },
           {
               "id": 6,
               "name": "blue turquoise",
               "year": 2005,
               "color": "#53B0AE",
               "pantone_value": "15-5217"
           }
       ],
       "support": {
           "url": "https://reqres.in/#support-heading",
           "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
       }
   }


这个响应帮助我从每个数据中找到键值。

共有1个答案

卫弘义
2023-03-14

有 2 个 JsonPath:

  • JsonPath Rest-Assured:
JsonPath jsonpath= response.jsonPath();
int id = jsonPath.getInt("data[1].id");
System.out.println(id); //2
  • JsonPath Jayway:
int id = com.jayway.jsonpath.JsonPath.read(response.asString(), "$.data[1].id");
System.out.println(id); //2
 类似资料:
  • 我试图使用Rest assured和JsonPath从pzSetRuleSetFilter字段中提取一个值,其中pyRuleSetName等于某个值(在本例中为商标)。我一直得到下面的错误。任何关于如何解决这个问题并提取价值的想法都是很好的 无效的JSON表达式:script1.groovy:1:需要EOF,发现“[”@第1行,第39列。 我的查询system.out.println(respon

  • 我正在尝试使用jsonPath从JSON数组中提取值。 JSON响应示例: 目前的测试如下: 然而,我一直在处理我的错误代码。我只想知道它的价值。

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

  • 我使用jayway JsonPath库使用给定的路径解析JSON。如果我给出正确的路径,我就能得到字符串值。但是,如果路径是数组,我想在给出路径时得到贴图列表。例如,我有一个JSON,如下所示: 下面是我用来解析json的代码。 如果我给出路径,我正在获取字符串,但我需要地图列表。下面是我使用jsonpath解析Json的代码。 任何人建议适当的方法来得到我所期望的。

  • 我花了很长时间弄清楚一些使用Jayways版本的JsonPath,我的查询如下: 但是,这不适用于Rest Assured,在执行时,我会看到以下错误: 是否需要以格式重写此表达式?如果是这样,那会是什么样子?或者,我可以以某种方式让Rest-Asken使用这个首选的JsonPath表达式吗? 下面是一段小的[WIP]代码,目前正在尝试使表达式工作,然后我将正确地修复该方法:

  • 我很难理解为什么这段代码返回一个Object[]而不是int[]("line"是我从一个看起来像"1 2 3 4 5"的文件中读取的字符串)。 我希望你能帮我理解,谢谢!