将 json 字符串作为输入传递给 RESTAssured 中使用 Selenium 的 POST 请求正文的参数之一



我正在使用Selenium中的RESTAssured java库进行API测试自动化。我需要将 json 字符串作为值传递给 POST 请求正文的一个参数。我的请求正文如下所示:

{
"parameter1": "abc",
"parameter2": "def",
"parameter3": {
"id": "",
"key1": "test123",
"prod1": {
"id": "",
"key3": "test123",
"key4": "12334",
"key5": "3",
"key6": "234334"
},
"prod2": {
"id": "",
"key7": "test234",
"key8": "1",
"key9": true
}
},
"parameter4": false,
"parameter5": "ghi"
}

对于参数 3,我需要以 json 格式传递一个字符串值。json 文件位于我的本地系统中,是一个很大的文件,所以如果我可以将路径传递给 json 文件,那将是有意义的。

有没有办法使用放心来实现这一点?

使用 org.json 库;

读取 json 文件并获取为字符串

String content = "";
try {
content = new String(Files.readAllBytes(Paths.get("absolute_path_to_file\example.json")));
} catch (IOException e) {
e.printStackTrace();
}

将字符串隐藏为 JSONObject

JSONObject jsonObject = new JSONObject(content);

获取需要放入jsonObject的新 json 对象

String jsonString = "{n" +
"  "firstName": "John",n" +
"  "lastName" : "doe",n" +
"  "age"      : 26,n" +
"  "address"  : {n" +
"    "streetAddress": "naist street",n" +
"    "city"         : "Nara",n" +
"    "postalCode"   : "630-0192"n" +
"  }n" +
"}";
JSONObject updateObject = new JSONObject(jsonString);

parameter3的值替换为新updateObject

jsonObject.put("parameter3", updateObject);
System.out.println(jsonObject.toString());

如果美化打印输出;

{
"parameter5": "ghi",
"parameter4": false,
"parameter3": {
"firstName": "John",
"lastName": "doe",
"address": {
"streetAddress": "naist street",
"city": "Nara",
"postalCode": "630-0192"
},
"age": 26
},
"parameter2": "def",
"parameter1": "abc"
}

如果要更新嵌套的 json 对象,例如parameter3中的prod1

JSONObject parameter3JsonObject = jsonObject.getJSONObject("parameter3");
parameter3JsonObject.put("prod1", updateObject);

相关内容

  • 没有找到相关文章

最新更新