Не могу не передать массив Json в качестве тела в повторном запросе — java.lang.IllegalStateException: не является объектом JSON

#java #json #rest-assured #json-serialization

#java #json #будьте уверены #json-сериализация

Вопрос:

Я пытаюсь передать список объектов в качестве тела в повторном запросе:

 Transaction transaction1 = new Transaction();
Transaction transaction2 = new Transaction();
List<Transaction> transactionList = new ArrayList<Transaction>();

transaction1.setTransactionType= "TRANS";
transaction1.setAmmount=12;

transaction2.setTransactionType= "EXTR";
transaction2.setAmmount=15;

transactionList.add(transaction1);
transactionList.add(transaction2);

given().contentType(ContentType.JSON)
       .body(transactionList).when()
       .post(http://localhost:8085/transactions/batch);
 

Но когда я отправляю запрос, я получаю:

 Not a JSON Object: [{"transactionType":"TRANS","amount":"12"}, {"transactionType":"EXTR","amount":"15"}]
java.lang.IllegalStateException: Not a JSON Object: [{"transactionType":"TRANS","amount":"12"}, {"transactionType":"EXTR","amount":"15"}]   at com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:91)
 

Я уже JSONArray jsonArray = new JSONArray(transactionList) безуспешно пытался выполнить запрос следующим образом:

 2021-02-12 20:45:42,927 [Test worker] INFO  org.fpsautomation.loggerextension.LogFilter - Request details:
POST http://localhost:8085/transactions/batch 
Accept=*/*
Content-Type=application/json; charset=UTF-8
Params: {} 
Request body: {
  "empty": false
}
 

Комментарии:

1. какова ожидаемая полезная нагрузка запроса ? также разместите POJO здесь

Ответ №1:

Потому transactionList что это экземпляр List , в то время как для JSON требуются key:value пары, поэтому вам нужно использовать Map для генерации правильной полезной нагрузки. Самый простой способ в вашем случае — это:

 Map<Object, Object> payload = new HashMap<>();
payload.put(transactionList, "");
 

Это наверняка отправит ваше тело в путь, но вы должны поиграться и подогнать его в зависимости от ваших потребностей.