如何从 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 适配器调用片段函数

如何从 Firebase 获取所有设备令牌?

如何直接从类调用从接口继承的方法?

如何从服务器获取和设置 android 中的 API(从服务器获取 int 值)?如何绑定和实现这个

如何从Mac从android studio中的fabric注销? [复制]