寻求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
相关产品推荐
相关产品推荐

