Как заменить значение JSON, хранящееся в файле JSON, и использовать его в тесте Rest Assured - PullRequest
1 голос
/ 09 июля 2019

У меня есть набор файлов входных данных в JSON, и я пытаюсь заменить значение, присутствующее в файле JSON, и использую это значение для выполнения запроса на публикацию в restAssured

Файл JSON имеет

{
    "items": [
        {
            "item_ref": 241,
            "price": 100
        }
    ]
}

jsonbody ниже - строка из указанного выше файла JSON

Это код, который не работает:

JSONObject jObject  = new JSONObject(jsonbody);
        jObject.remove("item_ref");
        jObject.put("item_ref","251");
        System.out.println(jObject);

Вот что я получаю:

{"item_ref":"251","items":[{"item_ref":241,"price":100}]}

Что я хочу, это {"items":[{"item_ref":251,"price":100}]}

Я тоже пытался

JSONObject jObject  = new JSONObject(jsonbody);
        jObject.getJSONObject("items").remove("item_ref");
        jObject.getJSONObject("items").put("item_ref","251");
        System

Но там говорится, что JSONObject ["items"] не является JSONObject.

Все, что мне нужно, это заменить 241 на 251. Есть ли более простой способ сделать это?

Как правило, если у нас есть предопределенный файл тела JSON и мы хотим заменить некоторые значения в теле и использовать его в наших вызовах POST в RestAssured, есть ли более простой способ сделать это?

1 Ответ

1 голос
/ 10 июля 2019

Проблема в том, что поля item_ref и price не находятся в объекте JSON, как вы думаете.Они находятся в массиве JSON, который содержит объекты JSON.Чтобы изменить это значение, вы должны получить элементы массива, а затем выполнить очень похожий код, который вы написали.

Проверьте это:

JSONObject jObject  = new JSONObject(jsonbody);
JSONArray array = jObject.getJSONArray("items");
JSONObject itemObject = (JSONObject) array.get(0); //here we get first JSON Object in the JSON Array
itemObject.remove("item_ref");
itemObject.put("item_ref", 251);

Вывод:

{"items":[{"item_ref":251,"price":100}]}
...