You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rest Assured如何从RequestSpecification/FilterableRequestSpecification请求体按JsonPath删除属性

通用JsonPath属性删除实现方案

方案核心逻辑

使用Jayway JsonPath库的原生修改能力,它支持直接按JsonPath表达式批量删除匹配节点,无需针对JSON结构硬编码遍历逻辑,适配任意嵌套层级、数组场景。

前置依赖

如果项目未引入该库,补充对应依赖即可:
Maven依赖:

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.8.0</version>
</dependency>

Gradle依赖:

implementation 'com.jayway.jsonpath:json-path:2.8.0'

完整实现代码

import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;
import io.restassured.specification.FilterableRequestSpecification;

public class JsonPathUtils {
    /**
     * 按JsonPath表达式删除请求体中对应属性
     * @param frs 可过滤的Rest Assured请求规范对象
     * @param jsonPath 要删除的属性路径,示例:$.items[*].itemsProperties[*].code
     */
    public static void removePropertyByJsonPath(FilterableRequestSpecification frs, String jsonPath) {
        // 取出原始请求体
        String originalBody = frs.getBody().toString();
        // 解析为可修改的JsonPath上下文
        DocumentContext documentContext = JsonPath.parse(originalBody);
        // 按路径删除所有匹配节点,路径不存在时自动容错不报错
        documentContext.delete(jsonPath);
        // 生成修改后的JSON字符串
        String modifiedBody = documentContext.jsonString();
        // 把新的请求体写回RequestSpecification
        frs.body(modifiedBody);
    }
}

使用示例

针对你给出的JSON结构,要删除所有items数组元素下itemsProperties里的code字段,直接调用即可:

FilterableRequestSpecification frs= (FilterableRequestSpecification) rs;
// 路径说明:$代表根节点,[*]代表匹配数组所有元素
JsonPathUtils.removePropertyByJsonPath(frs, "$.items[*].itemsProperties[*].code");

如果要删除指定条件的属性,比如只删除code等于value1的字段,直接调整路径表达式即可:

JsonPathUtils.removePropertyByJsonPath(frs, "$.items[*].itemsProperties[?(@.code == 'value1')].code");

方案优势

  • 完全通用,无需适配不同JSON结构,支持任意嵌套层级、数组场景
  • 兼容复杂过滤逻辑,可通过JsonPath表达式实现条件删除
  • 内置容错机制,路径不存在时不会抛出异常,适合通用工具类封装

内容的提问来源于stack exchange,提问作者Bartosz Olczak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:09:01