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

JSON键包含点号时Rest Assured JsonPath取值为null如何解决

问题原因

Rest Assured 内置的 JsonPath 实现与通用在线 JsonPath 校验工具的标准实现存在差异,默认会将键名中的.识别为嵌套对象的分隔符,即使使用括号语法,部分旧版本 Rest Assured 仍然会优先解析.为嵌套分隔符,导致无法匹配到完整键名。

解决方法

方案1:使用无$前缀的括号访问语法

Rest Assured 的 JsonPath 不需要显式写根路径$,直接修改取值代码即可,适配绝大多数版本:

String value = jsonPath.getString("['organization.email'][0]");

方案2:分步取值

先获取键对应的完整数组,再取下标元素,兼容性更强:

List<String> errorList = jsonPath.getList("['organization.email']", String.class);
String value = errorList.get(0);

方案3:调整JsonPath配置

修改 JsonPath 配置,将键分隔符替换为不会出现在键名中的字符,就可以直接用带点的键名取值:

JsonPath jsonPath = JsonPath.from(jsonString).using(new JsonPathConfig().keySeparator('~'));
String value = jsonPath.getString("organization.email[0]");

方案4:转Map原生取值

如果以上方案都不生效,直接把JSON转成Map用原生Java方式取值,100%兼容所有场景:

Map<String, Object> resMap = jsonPath.getMap("$");
List<String> errorList = (List<String>) resMap.get("organization.email");
String value = errorList.get(0);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:24:10