JMeter中使用JSON Extractor提取嵌套JSON原始字符串问题
嵌套JSON字段原始值提取方案
问题说明
待处理的外层JSON结构如下,其中JSON字段存储的是带转义符的JSON字符串:
{ "id": 555, "name": "aaa", "JSON": "{\r\n \"fake1\": {},\r\n \"fake2\": \"bbbb\",\r\n \"fake3\": \"eee\" \r\n}", "after1": 1, "after2": "test" }
使用JSON Path表达式$.JSON提取时,默认配置下组件会自动识别该字段值为合法JSON,做反序列化、格式化处理,返回解析后带排版缩进的内容,丢失原始的\r\n转义换行、转义引号字符,不符合保留原始字符串的需求。
默认错误返回示例:
"{ "fake1": {}, "fake2": "bbbb", "fake3": "eee" }"
需要的目标返回值是保留所有转义字符的原始字符串:
"{\r\n \"fake1\": {},\r\n \"fake2\": \"bbbb\",\r\n \"fake3\": \"eee\" \r\n}"
配置方法
根据你使用的JSON Extractor所属工具,选择对应配置即可:
- 关闭自动解析嵌套JSON开关
找到提取器配置面板中类似 解析嵌套JSON、反序列化字符串值、格式化JSON结果 的选项,将其设置为禁用状态,再使用$.JSON表达式提取,组件会直接返回字段存储的原始字符串,不会做二次解析处理。 - 指定返回值类型为原始字符串
如果提取器支持返回类型配置,不要选择「JSON对象」「结构化节点」类型,手动指定返回类型为Raw String(原始字符串),即可跳过内部JSON解析逻辑,拿到原值。 - JMeter环境特殊配置
如果你用的是JMeter自带的JSON Extractor,检查是否开启了额外的JSON格式化插件,默认配置下直接用$.JSON即可返回字符串原值;如果仍有格式化问题,可换用Groovy脚本提取,代码如下:${__groovy(new groovy.json.JsonSlurper().parse(prev.getResponseData()).JSON,)}
内容的提问来源于stack exchange,提问作者user1337
相关产品推荐
相关产品推荐

