如何从 RequestSpecification/FilterableRequestSpecification 正文中删除属性?
Posted
技术标签:
【中文标题】如何从 RequestSpecification/FilterableRequestSpecification 正文中删除属性?【英文标题】:How to remove an attribute from RequestSpecification/FilterableRequestSpecification body? 【发布时间】:2021-12-31 09:58:49 【问题描述】:亲爱的,
我正在创建一个简单的方法,该方法将采用 String 参数,该参数将是 JSON 中属性/s 的路径或其他类型的“指针”,此方法将删除这些属性/s。
我的问题是我可以使用 JsonPath 找到这些属性的值,但我无法在放心(或其他库)中找到可以通过给定路径删除/删除属性的方法。 JSON 已在前面添加,因此我需要将他从 RequestSpecification 或 FilterableRequestSpecification 对象中拉出来。
RequestSpecification rs = *objFromContext*;
FilterableRequestSpecification frs= (FilterableRequestSpecification) rs;
frs.getBody();
我尝试过使用 JSONObject 类和 remove(),但它不适用于复杂的 JSON。
给定示例 JSON
"created": "string",
"updated": "string",
"items": [
"code": "TEST",
"nested":
"code": "test",
"name": "name",
"other": [
"code": "TEST",
"name": "myName",
"quantity": 1
]
,
"itemsProperties": [
"code": "value1",
"name": "name",
"value": 123
]
,
"code": "TEST",
"nested":
"code": "test",
"name": "name",
"other": [
"code": "TEST",
"name": "myName",
"quantity": 1
]
,
"itemsProperties": [
"code": "value2",
"name": "name",
"value": 123
]
],
"timer":
"startDate": "2015-01-01",
"endDate": "2021-01-02"
,
"id": "myId"
使用JsonPath jp = JsonPath.from(httpRequest.getBody().toString());
然后jp.get(items.itemsproperties.code)
我可以找到 value1 和 value2。我坚持这一点:如何从发送的正文中删除这些属性?
我知道我可以将 body 转换为 JSONObject,然后在 getJSONArray 和 GetJSONOBject 之间的字段转换后去字段并删除这些字段,但我想让这个方法更加通用。
这可能吗?
【问题讨论】:
【参考方案1】:如果你想在 Rest-Assured JsonPath 中操作 json,那么答案是否定的。你不能那样做。 JsonPath帮你从json中提取值,仅此而已。
您必须使用不同的库来删除键值对。
例如:使用JsonPath Jayway
DocumentContext parse = JsonPath.parse(body);
parse.delete("$..itemsProperties..code");
System.out.println(parse.jsonString());
【讨论】:
以上是关于如何从 RequestSpecification/FilterableRequestSpecification 正文中删除属性?的主要内容,如果未能解决你的问题,请参考以下文章
如何从外部从 GitHub 加载 JavaScript 文件? [复制]
如何将数据从回收器适配器发送到片段 |如何从 recyclerview 适配器调用片段函数