如何使用Map将嵌套JSON转换为RestAssured POST请求并传递多输入
用Java Map构建RestAssured POST请求体(嵌套JSON)
目标JSON结构
需要构建的嵌套JSON请求体如下:
{ "@serviceName": "75MultipleService", "inputs": [ { "@name": "inp1", "value": "8", "@type": "number" }, { "@name": "inp2", "value": "8", "@type": "number" } ] }
现有代码补充修改
你当前的代码只添加了inp1,要补充inp2只需在Arrays.asList()中新增一个对应输入项的HashMap对象即可。修改后的完整代码如下:
可读性更强的写法
import java.util.Arrays; import java.util.HashMap; import java.util.Map; public class RestAssuredRequestBuilder { public static void main(String[] args) { // 构建顶层请求体Map Map<String, Object> requestBody = new HashMap<>(); requestBody.put("@serviceName", "75MultipleService"); // 构建第一个输入项 Map<String, Object> input1 = new HashMap<>(); input1.put("@name", "inp1"); input1.put("value", "8"); input1.put("@type", "number"); // 构建第二个输入项 Map<String, Object> input2 = new HashMap<>(); input2.put("@name", "inp2"); input2.put("value", "8"); input2.put("@type", "number"); // 将两个输入项存入List后,放入顶层Map requestBody.put("inputs", Arrays.asList(input1, input2)); } }
保留匿名内部类的写法
如果偏好你原来的匿名类风格,也可以这么写:
Map<String, Object> map = new HashMap<>(); map.put("@serviceName", "75MultipleService"); map.put("inputs", Arrays.asList( new HashMap<String, Object>() {{ put("@name", "inp1"); put("value", "8"); put("@type", "number"); }}, new HashMap<String, Object>() {{ put("@name", "inp2"); put("value", "8"); put("@type", "number"); }} ));
在RestAssured中发送POST请求
构建好Map后,直接通过body()方法传入即可,RestAssured会自动将Map序列化为JSON格式:
import io.restassured.RestAssured; public class PostRequestSender { public static void main(String[] args) { // 先构建好上述的requestBody或map对象 RestAssured.given() .contentType("application/json") .body(requestBody) // 传入构建好的请求体Map .when() .post("你的目标接口URL") .then() .statusCode(200) // 验证响应状态码 .log().all(); // 打印完整响应信息 } }
内容的提问来源于stack exchange,提问作者Kanchan Sanap
相关产品推荐
相关产品推荐

