Извлечь значение json запроса REST API в переменную в RestAssured

Мы должны проверить значение, отправленное в нашей полезной нагрузке запроса REST API, с помощью значения ответа, попробовали следующее и смогли распечатать массив JSON. Как получить конкретный объект внутри массива тела JSON запроса.

Запросить данные:

{
 "Testinfo":{
  "abc":2,
  "xyz":"2020-01-01"
 },
 "Details":{
      "eductation":{
          "test1":9,
          "test2":100,
          "test3":50
      },
      "neweductiona":{
          "test1":"value",
          "test2":"Draws"
      }
 }
}

Код:

jsonObject = (JSONObject) JSONValue.parse(request);
JSONObject Testinfo =    (JSONObject) jsonObject.get("Testinfo");
JSONObject Details =     (JSONObject) jsonObject.get("Details");

System.err.println("Testinfo value in the request is: " + Testinfo);
System.err.println("Details value in the request is: " + Details);

Вывод:

{
  "abc":2,
  "xyz":"2020-01-01"


 },

{
  "eductation":{
      "test1":9,
      "test2":100,
      "test3":50
  },
  "neweductiona":{
      "test1":"value",
      "test2":"Draws",

  }

Как получить конкретное значение, например "Details.eductation.test3"

Пробовал ниже

JSONArray jsonArray = (JSONArray) JSONValue.parse(request)

но появляется сообщение об ошибке:

java.lang.ClassCastException: net.minidev.json.JSONObject cannot be cast to net.minidev.json.JSONArray

Пожалуйста, направьте.


person la1    schedule 03.06.2020    source источник


Ответы (1)


Использовать JSONPath

String json = "{\r\n" + "   \"Testinfo\": {\r\n" + "        \"abc\": 2,\r\n"
                + "     \"xyz\": \"2020-01-01\"\r\n" + "\r\n" + "\r\n" + "  },\r\n" + "\r\n" + "    \"Details\": {\r\n"
                + "     \"eductation\": {\r\n" + "          \"test1\": 9,\r\n" + "          \"test2\": 100,\r\n"
                + "         \"test3\": 50\r\n" + "      },\r\n" + "     \"neweductiona\": {\r\n"
                + "         \"test1\": \"value\",\r\n" + "          \"test2\": \"Draws\",\r\n"
                + "         \"test3\": 50\r\n" + "\r\n" + "     }\r\n" + "  }\r\n" + "}";

        JsonPath js = new JsonPath(json);

        System.out.println("Value is : "+js.getString("Details.eductation.test3"));

Вывод:

Значение: 50

person Wilfred Clement    schedule 03.06.2020