如何在restAssured的请求正文中发送带有列表的JSON post请求

时间:2021-06-28 14:08:16

标签: java rest-assured

我有一个这样的 json 请求:

{
   "clientApp":"PROD",
   "clientTransactionId":"12345443432",
   "messageList":[
      "SUCCESS",
      "FAILURE",
      "BLOCKED"
   ]
}

我尝试创建这样的 json 请求:

String messageList = "\SUCCESS\","\FAILURE\","\BLOCKED\";
requestParams.put("clientApp", "PROD");
requestParams.put("clientTransactionId", "12345443432");
requestParams.put("messageList", "["+ messageList + "]");

但它会像这样创建请求:

{
"messageList": "[\"SUCCESS\",\"FAILURE\",\"BLOCKED\"]",
"clientApp": "PROD",
"clientTransactionId": "12345443432"
}

如果我删除“”,它会给出定义字符串的错误。我如何创建这个帖子请求,有什么想法吗?

3 个答案:

答案 0 :(得分:0)

messageList 是一个 JSON 数组,所以你必须做这样的事情

String[] messageList = {"SUCCESS","FAILURE","BLOCKED"};
(...)
requestParams.put("messageList", messageList );

当然,我假设 requestParams 将以某种方式转换为 JSON 字符串(根据您提供的代码不清楚)

答案 1 :(得分:0)

我使用了数组而不是字符串。

JSONArray array = new JSONArray();
    array.add("SUCCESS");
    array.add("FAILURE");
    array.add("BLOCKED");

requestParams.put("messageList", array);

答案 2 :(得分:0)

我只想贡献一种方式来做。我假设您在这种情况下使用的是 Map。

Map<String, Object> payload = new HashMap<>();
payload.put("clientApp", "PROD");
payload.put("clientTransactionId", "12345443432");
payload.put("messageList", Arrays.asList("SUCCESS", "FAILURE", "BLOCKED"));

given().contentType(ContentType.JSON).log().all()
        .body(payload)
        .post("https://localhost");

结果如下:

enter image description here