处理JSON中的转义字符

时间:2019-07-15 05:53:57

标签: json jmeter jsr223 jmeter-5.0 json-extract

在我的一个网络请求中,我得到Response Body data如下


{
"JobId":1528,
"CaseId":61687,
"CaseName":"CaseName_3923",
"FirmId":4175,
"FirmName":"FirmName7922442",
"CaseFirmName":"CaseFirmName7922442",
"LastUpdatedDate":"0001-01-01T00:00:00Z"
}

我需要在下一个Web请求中使用整个响应,为此,我想删除开头的字符。

Jmeter中有什么方法或设置可以用来删除这些字符?实际上,我使用以下设置尝试了Json Extractor,但是这种方法不起作用,因此我认为最初的字符正在造成一个问题,即未将作业ID的值分配给变量vJobid < / p>

JSON提取器: 适用于:仅主要样品 Cretaed变量的名称:vJobId Json PathExtractor:$.JobID 第一场比赛

2 个答案:

答案 0 :(得分:2)

JSON结构开头的奇怪字符是错误编码的BOM(字节顺序标记)。看来您得到的UTF-8值显示为ISO-8859-1编码的字符串。

因此,要做的第一件事就是找到错误的编码位置并进行纠正。如果不是这样,您可以尝试使用以下Groovy代码在JSON提取器之前使用JSR223PostProcessor将数据自己编码回UTF-8:

vars.put("correctedResult",
        new String(prev.responseDataAsString.bytes("ISO-8859-1"), "UTF-8"));

此后处理器将尝试将错误编码的字符串转换回UTF-8,并将结果存储在JMeter变量correctedResult中。在JSON提取器中选择值为JMeter Variable Name to use的{​​{1}},以使用新编码的值代替原始数据。

但是很明显,找到错误编码的原因是更好的方法。

答案 1 :(得分:1)

您可以改用Regular Expression Extractor

使用正则表达式:

JobId":(\d+)

匹配编号1

它将与响应中的第一个工作编号匹配