有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何发送JSON post请求,并在restAssured中的请求正文中列出一个列表

我有这样一个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"
}

如果我删除“”将导致定义字符串时出错。我如何创建这个帖子请求,有什么想法吗


共 (2) 个答案

  1. # 1 楼答案

    我只想多做一件事。我想你是在用地图吧

    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

  2. # 2 楼答案

    messageList是一个JSON数组,所以您必须这样做

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

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