【问题标题】:Passing json string as an input to one of the parameters of a POST request body将 json 字符串作为输入传递给 POST 请求正文的参数之一
【发布时间】:2020-06-23 17:53:09
【问题描述】:

我需要将 json 字符串作为值传递给 POST 请求正文的一个参数。我的请求正文如下所示:

"参数1":"abc",
“参数2”:“定义”,
"参数3": "{\"id\":\"\",\"key1\":\"test123\",\"prod1\":{\"id\":\"\",\"key3 \":\"test123\",\"key4\":\"12334\",\"key5\":\"3\",\"key6\":\"234334\"},\"prod2\ ":{\"id\":\"\",\"key7\":\"test234\",\"key8\":1,\"key9\":true}}\"",
“参数4”:假,
“参数5”:“ghi”
}

对于参数 3,我需要以 json 格式传递一个字符串值。 json 文件位于我的本地系统中,并且是一个巨大的文件,因此如果我可以将它作为 jmeter 变量传递,那将是有意义的。我尝试如下:

{
"parameter1":"abc",
"parameter2":"def",
"parameter3": "${jsonObj}",
"parameter4":false,
"parameter5":"ghi"
}

使用以下代码添加 JSR223 预处理器后:

import org.apache.jmeter.util.JMeterUtils;

String fileContents = new File("path to json//myJson.json").getText('UTF-8');
vars.put("fileContents",fileContents);

var deltaJson = vars.get("fileContents");
var jsonObj = JSON.parse(deltaJson);
vars.put("jsonObj", JSON.stringify(jsonObj));

但我得到以下错误:

exceptions":{"exceptionType":"System.JSONException","exceptionMessage":"Unexpected character ('$' (code 36)): expected a valid value (number, String, array, object, 'true', 'false' or 'null') at input location [1,2]"}

谁能帮我解决这个问题?

【问题讨论】:

    标签: json jmeter


    【解决方案1】:

    有一种更简单的方法可以做到这一点,JMeter 带有 __FileToString() function,因此您可以更快地实现相同的目标,而无需编写任何脚本

    类似:

    {
      "parameter1": "abc",
      "parameter2": "def",
      "parameter3": ${__FileToString(path to json//myJson.json,UTF-8,jsonObj)},
      "parameter4": false,
      "parameter5": "ghi"
    }
    

    还要注意以下事实:

    • 推荐在 JSR223 测试元素中使用的语言是 Groovy,因为它提供了最佳性能
    • 您似乎正在使用 JSON 对象,该对象不能在浏览器上下文之外使用,因此您的代码无法生成正确的 JSON,因此您的请求失败,因为您正在传递 ${jsonObj},因为它是,替换不会发生这种情况,您可以自己查看jmeter.log 文件并查看脚本失败的确切原因

    【讨论】:

    • 尝试使用 __FileToString() 函数但出现错误 - [{"message":"反序列化过程中遇到意外参数:id at [line:4, column:21]","errorCode":"JSON_PARSER_ERROR "}]
    • 我在使用 __FileToString() 函数时出错。 json 文件必须使用转义字符 ('\') 传递。有效。谢谢@Dmitri T
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多