如何从 RequestSpecification/FilterableRequestSpecification 正文中删除属性?

How to remove an attribute from RequestSpecification/FilterableRequestSpecification body?

亲爱的,

我正在创建一个简单的方法,该方法将采用 String 参数,该参数将是指向 JSON 中 attribute/s 的路径或其他类型的“指针”,并且此方法将删除那些 attribute/s.

我的问题是我可以使用 JsonPath 找到那些 attribute/s 的值,但是我无法在放心(或其他库)中找到可以通过给定路径 remove/delete 属性的方法。 JSON 之前已经添加了,所以我需要将他从 RequestSpecification 或 FilterableRequestSpecification 对象 ex.

中拉出来
RequestSpecification rs = *objFromContext*;
FilterableRequestSpecification frs= (FilterableRequestSpecification) rs;
frs.getBody();

我尝试使用 JSONObject class 和 remove() 但它不适用于复杂的 JSONs.

给出的例子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 之间进行字段转换后转到字段并删除这些字段,但我想让这个方法更多更普遍。

这可能吗?

如果您想在 Rest-Assured JsonPath 中操作 json,那么答案是否定的。您不能那样做。 JsonPath 帮助您从 json 中提取值,仅此而已。

您必须使用不同的库来删除键值对。

例如:使用JsonPath Jayway

DocumentContext parse = JsonPath.parse(body);
parse.delete("$..itemsProperties..code");
System.out.println(parse.jsonString());