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

RestAssured反序列化时如何避免键名中点号被识别为JSONPath分隔符

RestAssured解析含点号键名JSON的解决方案

问题原因

该配置确实存在于JsonPathConfig中,你之前没有找到对应参数。RestAssured JsonPath默认使用.作为路径分隔符,会自动将键名中的点识别为嵌套层级拆分标识,才会出现你遇到的嵌套Map结构。

解决方案

有两种常用实现方式可以保留原始带点号的键名:

方案1:直接使用独立JSON序列化工具(更稳定)

不使用RestAssured自带的JsonPath解析,直接提取原始响应字符串后用Jackson/Gson反序列化为Map,完全规避RestAssured的路径解析规则:

// 提取原始响应字符串
String responseBody = then().extract().body().asString();
// Jackson反序列化示例
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> result = objectMapper.readValue(responseBody, new TypeReference<Map<String, Object>>() {});

方案2:修改JsonPath的路径分隔符配置

调用JsonPathConfig的withPathDelimiter方法,将默认的.分隔符替换为不会出现在你的键名中的其他字符,即可保留原始键名:

// 自定义JsonPath配置,替换路径分隔符为下划线
JsonPathConfig customConfig = JsonPathConfig.jsonPathConfig()
    .withPathDelimiter('_');
// 使用自定义配置解析响应
Map<String, Object> result = JsonPath.using(customConfig)
    .parse(then().extract().body().asString())
    .getMap("");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:06:02