将 json 字符串作为输入传递给 RESTAssured with Selenium 中的 POST 请求正文的参数之一
Passing json string as an input to one of the parameters of a POST request body in RESTAssured with Selenium
我正在使用 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 文件就有意义了。
有什么方法可以使用 RestAssured 来实现这个目标吗?
使用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);
我正在使用 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 文件就有意义了。
有什么方法可以使用 RestAssured 来实现这个目标吗?
使用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
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);