当前位置: 首页 > 知识库问答 >
问题:

将json字符串作为输入传递给RESTAssured中的POST请求体的参数之一,使用Selenium

相化
2023-03-14

我正在使用Selenium中的RESTAssured Java库进行API测试自动化。我需要将一个json字符串作为值传递给POST请求体的一个参数。我的请求正文如下所示:

{
  "parameter1": "abc",
  "parameter2": "def",
  "parameter3": {
    "id": "",
    "key1": "test123",
    "prod1": {
      "id": "",
      "key3": "test123",
      "key4": "12334",
      "key5": "3",
      "key6": "234334"
    },
    "prod2": {
      "id": "",
      "key7": "test234",
      "key8": "1",
      "key9": true
    }
  },
  "parameter4": false,
  "parameter5": "ghi"
}

对于parameter3,我需要传递一个json格式字符串值。json文件位于我的本地系统中,是一个很大的文件,所以如果我能传递到json文件的路径将会很有意义。

有没有办法使用RestAssured来实现这一点?

共有1个答案

田博易
2023-03-14

使用org.json库;

读取json文件并以字符串形式获取

String content = "";
try {
    content = new String(Files.readAllBytes(Paths.get("absolute_path_to_file\\example.json")));
} catch (IOException e) {
    e.printStackTrace();
}

字符串隐藏到JSONObject

JSONObject jsonObject = new JSONObject(content);

获取需要放入JSONObject中的新json对象

String jsonString = "{\n" +
        "  \"firstName\": \"John\",\n" +
        "  \"lastName\" : \"doe\",\n" +
        "  \"age\"      : 26,\n" +
        "  \"address\"  : {\n" +
        "    \"streetAddress\": \"naist street\",\n" +
        "    \"city\"         : \"Nara\",\n" +
        "    \"postalCode\"   : \"630-0192\"\n" +
        "  }\n" +
        "}";

JSONObject updateObject = new JSONObject(jsonString);

用新的updateobject替换parameter3的值

jsonObject.put("parameter3", updateObject);

System.out.println(jsonObject.toString());

如果你美化了打印输出;

{
  "parameter5": "ghi",
  "parameter4": false,
  "parameter3": {
    "firstName": "John",
    "lastName": "doe",
    "address": {
      "streetAddress": "naist street",
      "city": "Nara",
      "postalCode": "630-0192"
    },
    "age": 26
  },
  "parameter2": "def",
  "parameter1": "abc"
}

如果要更新嵌套json对象,如parameter3中的prod1

JSONObject parameter3JsonObject = jsonObject.getJSONObject("parameter3");
parameter3JsonObject.put("prod1", updateObject);
 类似资料:
  • 我需要将一个json字符串作为值传递给POST请求正文的一个参数。我的请求正文如下所示: 对于参数3,我需要以json格式传递一个字符串值。json文件位于我的本地系统中,是一个巨大的文件,所以如果我可以将其作为jmeter变量传递,这是有意义的。我尝试了以下方法: 添加JSR223预处理器后,代码如下: 但我得到以下错误: 有人能帮我解决这个问题吗?

  • 问题内容: 我正在将ajax发布到webmethod上,我可以在客户端(通过Firebug)看到请求的状态为200,但未达到我的webmethod中的停止点(webmethod的第一行)。json参数一切正常,但是通过反序列化json的方式,我不得不将其更改为字符串。 js: aspx: 问题答案: 您在jQuery JSON帖子中缺少内容类型: 请参阅本文。当我遇到类似的问题时,它对我很有帮助:

  • 我在Excel中的VBA宏中使用了以下代码: 在即时窗口中,我收到了以下错误: 400 Apache Tomcat/8.0.28-错误报告1{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;}H2{font-family:Tahoma,Arial,sans-serif;颜

  • 问题内容: 我正在创建一个简单的登录页面,我想将登录名和密码参数作为UTF-8编码的字符串传递。正如您在下面的代码中看到的那样,第一行是我将编码设置为UTF-8的位置,但这似乎毫无意义,因为它不起作用。当我在重音符号中使用登录名和密码参数时,结果页面会收到奇怪的字符。 如何以一种适用于所有浏览器的方式正确设置字符编码? 问题答案: 在只设置响应的字符编码和所述HTTP的属性标题中。基本上,它告诉服

  • 问题内容: 我想将字符串数组作为参数传递给函数。请看下面的代码 代替: 但是如果我这样做,我会收到一条错误消息,指出将其转换为。我想知道是否可以传递这样的值,或者正确的方法是什么? 问题答案: 怎么样:

  • 我正在创建一个简单的登录页面,并希望将登录和密码参数作为UTF-8编码字符串传递。正如您在下面的代码中所看到的,第一行是我将编码设置为UTF-8的地方,但这似乎没有意义,因为它不起作用。当我使用带有重音符号的登录和密码参数时,结果页面会收到奇怪的字符。 如何以适用于所有浏览器的方式正确设置字符编码?