【问题标题】:JSON Response Value says Null Rest AssuredJSON 响应值表示 Null 放心
【发布时间】:2019-10-31 18:29:43
【问题描述】:

我的 JSON 响应内容如下:

{
 "_embedded":{
   "contents": [
   {
    "data": 1234,
    "success": true, 
   }
  ]
 }
}

我正在尝试提取成功消息和数据。但是我的控制台输出一直显示为空。

在此处提取响应后,我的代码使用 Rest Assured 接收 Null 响应:

String res = response.asString():
JsonPath js = new JsonPath(res);

String success = js.get("_embedded[0].contents[0].success");
String data = js.get("_embedded[0].contents[0].data");

System.out.println(success);
System.out.println(data);

我对成功和数据的回应都是空的

【问题讨论】:

    标签: java json rest-assured


    【解决方案1】:

    从您的 JSON 示例来看,_embedded 似乎不是一个列表。 _embedded[0] 可能会返回 null,因为当您尝试使用“_embedded[0].contents[0].success”提取成功值时,没有名为 _embedded 的列表。

    通过使用提取成功值

    js.get("$._embedded.contents[0].success");
    

    【讨论】:

    • 我尝试删除 "_embedded" 但是我得到 Cannot invoke method getAt() on null object 新的成功字符串读取js.get("contents[0].success")
    • @mike try js.get("$._embedded.contents[0].success")
    • 响应是 java.lang.Boolean 不能转换为 java.lang.String
    • 对更改数据的响应是java.lang.Long 不能转换为java.lang.String
    • 那是因为您将这两个值都设置为字符串。如果您将成功和数据的类型更改为相应的类型(布尔型和长型),那么您将看到这些值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    相关资源
    最近更新 更多