beanShell json body для почтового метода на Jmeter

может ли кто-нибудь помочь добавить экранирующие кавычки с косой чертой, например \" на этом теле сына:

    {
  "firstName": "teo",
  "lastName": "leo",
  "companyName": "abc",
  "restaurantId": "54d34443e4b0382b3208703d",
  "phones": [
    {
      "label": "Mobile",
      "value": "123456789",
      "countryCode": "+123",
      "isPrimary": true
    }
  ],
  "addresses": "haha"
}

я пытался с этим, но beanShell PreProcessor не могу его принять

String formvalues = "{\"firstName\": \"teo\",\"lastName\": \"leo\",\"companyName\": \"abc\",\"restaurantId\": \"54d34443e4b0382b3208703d\",\"phones\": [{\"label\":\"Mobile\",\"value\": \"123456789\",\"countryCode\": \"+123\",\"isPrimary\": true}],\"addresses\": \"haha\"}"

большое спасибо!


person Chuoi    schedule 13.01.2016    source источник
comment
Затем замените " на \" перед передачей в beanShell.   -  person ρяσѕρєя K    schedule 13.01.2016


Ответы (1)


Если вы хотите продолжить форматирование:

String formvalues = "{\n" +
        "  \"firstName\": \"teo\",\n" +
        "  \"lastName\": \"leo\",\n" +
        "  \"companyName\": \"abc\",\n" +
        "  \"restaurantId\": \"54d34443e4b0382b3208703d\",\n" +
        "  \"phones\": [\n" +
        "    {\n" +
        "      \"label\": \"Mobile\",\n" +
        "      \"value\": \"123456789\",\n" +
        "      \"countryCode\": \"+123\",\n" +
        "      \"isPrimary\": true\n" +
        "    }\n" +
        "  ],\n" +
        "  \"addresses\": \"haha\"\n" +
        "}";

Если вам нужна одна строка (помните, что Content-Length будет другой)

String formvalues = "{\"firstName\":\"teo\",\"lastName\":\"leo\",\"companyName\":\"abc\",\"restaurantId\":\"54d34443e4b0382b3208703d\",\"phones\":[{\"label\":\"Mobile\",\"value\":\"123456789\",\"countryCode\":\"+123\",\"isPrimary\":true}],\"addresses\":\"haha\"}";

Полный код для генерации тела и добавления его в качестве параметра:

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.http.util.HTTPArgument;

String formvalues = "{\n" +
           "  \"firstName\": \"teo\",\n" +
           "  \"lastName\": \"leo\",\n" +
           "  \"companyName\": \"abc\",\n" +
           "  \"restaurantId\": \"54d34443e4b0382b3208703d\",\n" +
           "  \"phones\": [\n" +
           "    {\n" +
           "      \"label\": \"Mobile\",\n" +
           "      \"value\": \"123456789\",\n" +
           "      \"countryCode\": \"+123\",\n" +
           "      \"isPrimary\": true\n" +
           "    }\n" +
           "  ],\n" +
           "  \"addresses\": \"haha\"\n" +
           "}";

Arguments arguments = new Arguments();
arguments.addArgument(new HTTPArgument("",formvalues));       
sampler.setArguments(arguments);

JavaDoc по соответствующим классам:

См. руководство Как использовать BeanShell: любимый встроенный компонент JMeter. для получения дополнительной информации о сценариях Beanshell в JMeter.

person Dmitri T    schedule 14.01.2016
comment
вау, большое спасибо, я сгенерировал правильное тело json для http-метода публикации с помощью Если вам нужна одна строка (помните, что Content-Length будет другой), попробуйте другой, который вы предлагаете: D - person Chuoi; 16.01.2016