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

寻求Java中JSON Path合规校验方案:解决多工具校验结果不一致问题

Java中可靠的JSON Path校验方案(解决工具定义差异问题)

一、Java端实现严格一致的校验

要让案例2(带空格的路径)和案例3(用/分隔的路径)都抛出异常,只需给Jayway JsonPath开启严格模式,覆盖默认的宽松解析行为,对齐IntelliJ的校验逻辑:

实现代码

import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.JsonPath;
import com.jayway.jsonpath.Option;
import com.jayway.jsonpath.InvalidPathException;

public class JsonPathValidator {
    public static boolean validateJsonPath(String path) {
        // 构建严格模式配置
        Configuration strictConfig = Configuration.builder()
                .options(Option.STRICT_MODE)
                .build();
        
        try {
            JsonPath.compile(path, strictConfig);
            return true;
        } catch (InvalidPathException e) {
            // 输出错误提示,引导用户修正
            System.out.println("JSON Path非法:" + e.getMessage());
            return false;
        }
    }

    public static void main(String[] args) {
        validateJsonPath("field.inner field"); // 抛出异常:提示空格需用['inner field']语法
        validateJsonPath("field/innerField"); // 抛出异常:识别/为非法字符
        validateJsonPath("field.innerField"); // 校验通过
    }
}

严格模式的作用

  • 对案例2:强制要求含空格的属性使用括号语法(field['inner field']),拒绝点语法中的空格,和IntelliJ校验一致
  • 对案例3:拒绝将/作为属性名的一部分(默认模式会把field/innerField当作单个属性),强制使用标准的.作为层级分隔符,避免用户因输入错误导致解析不符合预期

二、匹配严格规则的在线工具

选择支持Jayway JsonPath严格模式的在线编辑器,这类工具会和你Java端的校验行为完全一致:

  • 能准确识别案例2的空格语法错误,要求用户改用括号语法
  • 会标记案例3中的/为非法字符,引导用户替换为.

三、工具差异说明

  • 案例2的在线工具分歧:部分在线工具采用宽松解析规则,允许点语法中包含空格,但这不符合JSON Path标准规范,严格模式下会强制遵循标准
  • 案例3的默认行为:Jayway默认模式会将含/的路径视为单个属性,而严格模式会拒绝这种非标准写法,对齐IntelliJ的校验逻辑,避免用户输入错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 05:15:44