如何在JSON请求体中传递HTML页面并避免JSON解析报错?
解决方法
JSON格式要求字符串值中的双引号、反斜杠、换行、制表符等特殊字符必须做转义处理,你直接读取原始HTML内容传入JSON,没有做转义自然会触发解析错误,可选择以下任意一种方案处理:
- 方案1:直接使用JMeter自带的
__escapeJson函数封装文件读取结果
把你原本的传值写法${__FileToString(page_source.txt,,)}替换为${__escapeJson(${__FileToString(page_source.txt,,)})}即可,函数会自动处理所有JSON非法字符的转义,处理后直接作为JSON键值传递即可。 - 方案2:通过Groovy脚本预处理内容
如果你是在脚本中处理文件读取,可使用以下代码转义后存入变量再引用:// 读取HTML文件内容 def rawHtml = new File("page_source.txt").text // 转义为合法JSON字符串 def escapedHtml = groovy.json.StringEscapeUtils.escapeJson(rawHtml) // 存入JMeter变量,后续直接引用${escaped_html}即可 vars.put("escaped_html", escapedHtml) - 方案3:Base64编码传输
如果服务端可配合解码,可直接对HTML内容做Base64编码,完全避免JSON格式冲突,JMeter写法为:${__base64Encode(${__FileToString(page_source.txt,,)},)},编码后的内容可直接传入JSON payload。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

