处理 JSON 中的转义字符

Handle escaping characters in JSON

在我的一个网络请求中,我得到 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[ 时产生了问题=19=]

JSON 提取器: 适用于:仅主样本 Cretaed 变量的名称:vJobId Json路径提取器:$.JobID 第 1 场比赛

您可以使用Regular Expression Extractor代替,

使用正则表达式:

JobId":(\d+)

匹配号1

它将匹配响应中的第一个作业 ID 号

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

所以首先要做的是找到编码错误的地方并纠正它。如果这不是一个选项,您可以尝试通过在 JSON 提取器之前使用 JSR223PostProcessor 使用以下 Groovy 代码自行将数据编码回 UTF-8:

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

此后处理器将尝试将 ill-encoded 字符串转换回 UTF-8,并将结果存储在 JMeter 变量 correctedResult 中。在 JSON 提取器中选择值为 correctedResultJMeter Variable Name to use 以使用新编码的值而不是原始数据。

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