如何替换存储在 JSON 文件中的 JSON 值并在 Rest Assured 测试中使用它
How to replace a JSON value stored in a JSON file and use that in a Rest Assured test
我在 JSON 中有一组输入数据文件,我正在尝试替换 JSON 文件中存在的值并使用该值在 post 中执行请求放心
JSON 文件有
{
"items": [
{
"item_ref": 241,
"price": 100
}
]
}
下面的jsonbody是上面JSON文件的String
这是失败的代码:
JSONObject jObject = new JSONObject(jsonbody);
jObject.remove("item_ref");
jObject.put("item_ref","251");
System.out.println(jObject);
这就是我得到的:
{"item_ref":"251","items":[{"item_ref":241,"price":100}]}
我要的是{"items":[{"item_ref":251,"price":100}]}
我也试过了
JSONObject jObject = new JSONObject(jsonbody);
jObject.getJSONObject("items").remove("item_ref");
jObject.getJSONObject("items").put("item_ref","251");
System
但是它说 JSONObject["items"] 不是 JSONObject.
我只需要将 241 替换为 251。有更简单的方法吗?
一般来说,如果我们有一个预定义的 JSON 正文文件,并且如果我们想要替换正文中的某些值并在我们的 POST 调用中使用它 RestAssured,有没有更简单的方法怎么做?
问题是 - 字段 item_ref
和 price
并不像您认为的那样在 JSON 对象中。
它们位于 JSON 包含 JSON 个对象的数组中。为了修改该值,您必须获取数组的元素,然后执行您编写的非常相似的代码。
看看这个:
JSONObject jObject = new JSONObject(jsonbody);
JSONArray array = jObject.getJSONArray("items");
JSONObject itemObject = (JSONObject) array.get(0); //here we get first JSON Object in the JSON Array
itemObject.remove("item_ref");
itemObject.put("item_ref", 251);
输出为:
{"items":[{"item_ref":251,"price":100}]}
此外,您可以创建一个 Hashmap:
HashMap<String,String> map = new HashMap<>();
map.put("key", "value");
RestAssured.baseURI = BASE_URL;
RequestSpecification request = RestAssured.given();
request.auth().preemptive().basic("Username", "Password").body(map).put("url");
System.out.println("The value of the field after change is: " + map.get("key"));
我在 JSON 中有一组输入数据文件,我正在尝试替换 JSON 文件中存在的值并使用该值在 post 中执行请求放心
JSON 文件有
{
"items": [
{
"item_ref": 241,
"price": 100
}
]
}
下面的jsonbody是上面JSON文件的String
这是失败的代码:
JSONObject jObject = new JSONObject(jsonbody);
jObject.remove("item_ref");
jObject.put("item_ref","251");
System.out.println(jObject);
这就是我得到的:
{"item_ref":"251","items":[{"item_ref":241,"price":100}]}
我要的是{"items":[{"item_ref":251,"price":100}]}
我也试过了
JSONObject jObject = new JSONObject(jsonbody);
jObject.getJSONObject("items").remove("item_ref");
jObject.getJSONObject("items").put("item_ref","251");
System
但是它说 JSONObject["items"] 不是 JSONObject.
我只需要将 241 替换为 251。有更简单的方法吗?
一般来说,如果我们有一个预定义的 JSON 正文文件,并且如果我们想要替换正文中的某些值并在我们的 POST 调用中使用它 RestAssured,有没有更简单的方法怎么做?
问题是 - 字段 item_ref
和 price
并不像您认为的那样在 JSON 对象中。
它们位于 JSON 包含 JSON 个对象的数组中。为了修改该值,您必须获取数组的元素,然后执行您编写的非常相似的代码。
看看这个:
JSONObject jObject = new JSONObject(jsonbody);
JSONArray array = jObject.getJSONArray("items");
JSONObject itemObject = (JSONObject) array.get(0); //here we get first JSON Object in the JSON Array
itemObject.remove("item_ref");
itemObject.put("item_ref", 251);
输出为:
{"items":[{"item_ref":251,"price":100}]}
此外,您可以创建一个 Hashmap:
HashMap<String,String> map = new HashMap<>();
map.put("key", "value");
RestAssured.baseURI = BASE_URL;
RequestSpecification request = RestAssured.given();
request.auth().preemptive().basic("Username", "Password").body(map).put("url");
System.out.println("The value of the field after change is: " + map.get("key"));