索引
问题描述
在使用postman进行接口测试的时候,总是会碰到一个问题,请求参数如果是 json 格式时是不支持注释的,会将注释也一并发送出去,后端接受后可能会导致数据不正确。
解决方案
使用正则匹配的方法,利用Pre-request Script(前置脚本)预处理发送出去的JSON格式信息
添加方法
处理效果
预处理函数代码
方法代码如下:
//去除json参数中的注释信息GlobalJsonMinify=function(json){var tokenizer =/"|(\/\*)|(\*\/)|(\/\/)|\n|\r|\[|]/g,
in_string =false,
in_multiline_comment =false,
in_singleline_comment =false,
tmp, tmp2, new_str =[], ns =0, from =0, lc, rc,
prevFrom
;
tokenizer.lastIndex =0;while( tmp = tokenizer.exec(json)){
lc = RegExp.leftContext;
rc = RegExp.rightContext;if(!in_multiline_comment &&!in_singleline_comment){
tmp2 = lc.substring(from);if(!in_string){
tmp2 = tmp2.replace(/(\n|\r|\s)*/g,"");}
new_str[ns++]= tmp2;}
prevFrom = from;
from = tokenizer.lastIndex;if(tmp[0]==="\""&&!in_multiline_comment &&!in_singleline_comment){
lc.lastIndex = prevFrom;
tmp2 = lc.match(/(\\)*$/);if(!in_string ||!tmp2 ||(tmp2[0].length %2)===0){
in_string =!in_string;}
from--;
rc = json.substring(from);}elseif(tmp[0]==="/*"&&!in_string &&!in_multiline_comment &&!in_singleline_comment){
in_multiline_comment =true;}elseif(tmp[0]==="*/"&&!in_string && in_multiline_comment &&!in_singleline_comment){
in_multiline_comment =false;}elseif(tmp[0]==="//"&&!in_string &&!in_multiline_comment &&!in_singleline_comment){
in_singleline_comment =true;}elseif((tmp[0]==="\n"|| tmp[0]==="\r")&&!in_string &&!in_multiline_comment && in_singleline_comment){
in_singleline_comment =false;}elseif(!in_multiline_comment &&!in_singleline_comment &&!(/\n|\r|\s/.test(tmp[0]))){
new_str[ns++]= tmp[0];}}
new_str[ns++]= rc;return new_str.join("");};
pm.request.body.raw =GlobalJsonMinify(pm.request.body.raw)
版权归原作者 青及笄 所有, 如有侵权,请联系我们删除。