简体   繁体   English

如何提取使用 RestApi 归档的 Json 数据?

[英]How To Extract Json Data Filed With RestApi?

i make a post to an api with rest assured.我向 api 发帖,并保证 rest。 and than i try to make sure expected data from responsed data, but i got some errors like this -> "java.lang.IllegalArgumentException: The parameter "data" was used but not defined. Define parameters using the JsonPath.params(...) function"然后我尝试从响应的数据中确保预期的数据,但我得到了一些像这样的错误->“java.lang.IllegalArgumentException:参数“data”已使用但未定义。使用 JsonPath.params(.. 。) 功能”


my code:我的代码:

String payload_data = "{" +
                "\"Time\":1638057600, " +
                "\"exampleType\":example, " +
                "\"Id\":[2]}";

    RestAssured.defaultParser = Parser.JSON;
    given().
            contentType(ContentType.JSON).
            body(payload_data).
            when().
            post(api_url).
            then().
            statusCode(200).
            body("data.examples.2.exampleData", equalTo("33"));
}

my json data我的 json 数据

{
    "success": true,
    "data": {
        "examples": {
            "2": {
                "ex_data": 0,
                "exampleData": 33,
                "data_ex": 0,
            }
      }
}

First, I tested path "data.examples.2.exampleData" with your json, it works fine.首先,我用您的 json 测试了路径"data.examples.2.exampleData" ,它工作正常。 No problem.没问题。

You made some mistakes here.你在这里犯了一些错误。

  1. Your payload is invalid json.您的有效载荷无效 json。
{
  "Time": 1638057600,
  "exampleType": example, //it must be number or String with double quote
  "Id": [
    2
  ]
}
  1. You are comparing 2 things with different data types.您正在比较具有不同数据类型的 2 个事物。

"data.examples.2.exampleData" --> int 33 "data.examples.2.exampleData" -> int 33

equalTo("33") --> String "33" equalTo("33") --> 字符串 "33"

Fix: body("data.examples.2.exampleData", equalTo(33));修复: body("data.examples.2.exampleData", equalTo(33));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM