我正在使用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);