【问题标题】:Handle escaping characters in JSON处理 JSON 中的转义字符
【发布时间】:2019-07-15 05:53:57
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    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 提取器中选择值为correctedResultJMeter Variable Name to use,以使用新编码的值而不是原始数据。

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

    【讨论】:

      【解决方案2】:

      您可以改用Regular Expression Extractor

      使用正则表达式:

      JobId":(\d+)
      

      匹配号1

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

      【讨论】:

        猜你喜欢
        • 2016-10-07
        • 2013-03-17
        • 2015-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-09
        • 1970-01-01
        相关资源
        最近更新 更多