Передача пустой строки в метод класса JsonOutput в JSON - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть сценарий Groovy, в котором я передаю пустую строку методу 'Json' (он находится в groovy. json .JsonOutput).

Я хочу проверить, наш API обрабатывает и вводит ключ с пустой строкой, поэтому "key": "",

Я действительно хочу проверить три вещи:

  1. Проверить с помощью действительное значение ("ключ": "действительное значение")
  2. Проверка с пустым значением ("ключ": "")
  3. Проверка без ключа и значения (ноль)

Я использую следующий groovy -код для создания JSON -тела. В реальном скрипте есть некоторые операторы, где скрипт проверяет, присутствует ли значение, если нет, оно будет исключено.

import groovy.json.*;

class Example {
    def exampleKey1
    def exampleKey2
    def exampleKey3
}

String valueexampleKey1 = "value"; 
String valueexampleKey2 = "";
String valueexampleKey3 = null;

def generator = new JsonGenerator.Options()
.excludeNulls()
.build()

Example example = new Example (
    exampleKey1: valueexampleKey1, 
    exampleKey2: valueexampleKey2,
    exampleKey3: valueexampleKey3
    );

String unformattedJSON = generator.toJson(example);
String formattedJSON = JsonOutput.prettyPrint(unformattedJSON);

vars.put("generatedBody", formattedJSON);

Выдается следующее исключение:

2020-02-12 13: 05: 26,168 ОШИБКА oajJMeter: необработанное исключение: java .lang.IllegalAccessError: класс groovy. json .DefaultJsonGenerator попытался получить доступ к закрытому полю groovy. json .JsonOutput.EMPTY_STRING_CHARS (groovy. json .DefaultJsonGenerator и groovy. json .JsonOutput находятся в неназванном модуле загрузчика. org. apache .jmeter.DynamicClassLoader @ 1ae369b7) в groovy. json .DefaultJsonGenerator.writeCharSequence (DefaultJsonGenerator. java: 256) ~ [groovy - json -2.5.7.jar: 2.5 .7] в groovy. json .DefaultJsonGenerator.writeObject (DefaultJsonGenerator. java: 190) ~ [groovy - json -2.5.7.jar: 2.5.7] в groovy. json .DefaultJsonGenerator.writeMapEntry (DefaultJsonGenerator. java: 387) ~ [groovy - json -2.5.7.jar: 2.5.7] в groovy. json .DefaultJsonGenerator.writeMap (DefaultJsonGenerator. java: 375) ~ [groovy - json -2.5.7.jar: 2.5.7] в groovy. json .DefaultJsonGenerator.writeObject (DefaultJsonGenerator. java: 237) ~ [groovy - json -2.5.7 .jar: 2.5.7] в groovy. json .DefaultJsonGenerator.writeObject (DefaultJsonGenerator. java: 164) ~ [groovy - json -2.5.7.jar: 2.5.7] в groovy. json .DefaultJsonGenerator.to Json (по умолчаниюJsonGenerator. java: 98) ~ [groovy - json -2.5.7.jar: 2.5.7] при groovy. json .JsonGenerator $ to Json .call (неизвестный источник) ~ [?:?] В Script27.run (Script27. groovy: 111) ~ [?:?]

Есть ли Обойти эту проблему?

1 Ответ

0 голосов
/ 27 февраля 2020
import groovy.json.*;

def exampleOne = "";
def exampleTwo = null;
def exampleThree = vars.get("varExampleThree");

def json = new groovy.json.JsonBuilder();

def result = json {
    if (exampleOne != null) { keyOne exampleOne }
    if (exampleTwo != null) { keyTwo exampleTwo }
    if (exampleThree != null) { keyThree exampleThree }
}

vars.put("output", json);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...