0
votes

Example JSON

[
    {
        "PROPERTY1": [
            {
                "name": "String"
                "value: 0 
            },
            {
                "surname": "String",
                "age": 20
            }
        ]
    },
    {
        "PROPERTY2": [
            {
                "name": "String"
                "value: 1 
            },
            {
                "surname": "String",
                "age": 22
            }
        ]
    }
]

I want to have an array [PROPERTY1, PROPERTY2]

How can I do it with est assured JSON path extractor?

.extract().path("collect{it.value}"); //it's not working
1
No........... . - Norayr Sargsyan

1 Answers

0
votes

The below is more of a long shot but that's the only solution I can think of right now

The code is fairly self-explanatory, let me know otherwise and I'll add in more comments

    String payload = "[{\r\n" + "       \"PROPERTY1\": [{\r\n" + "              \"name\": \"String\",\r\n"
            + "             \"value\": 0\r\n" + "           },\r\n" + "         {\r\n"
            + "             \"surname\": \"String\",\r\n" + "               \"age\": 20\r\n" + "            }\r\n"
            + "     ]\r\n" + "  },\r\n" + " {\r\n" + "      \"PROPERTY2\": [{\r\n"
            + "             \"name\": \"String\",\r\n" + "              \"value\": 1\r\n" + "           },\r\n"
            + "         {\r\n" + "              \"surname\": \"String\",\r\n" + "               \"age\": 22\r\n"
            + "         }\r\n" + "      ]\r\n" + "  }\r\n" + "]";

    JSONArray array = new JSONArray(payload);
    Iterator<Object> iterator = array.iterator();

    ArrayList<String> keys = new ArrayList();

    while (iterator.hasNext()) {
        JSONObject jsonObject = (JSONObject) iterator.next();

        keys.addAll(jsonObject.keySet());
    }

    System.out.println(keys);

Make sure to extract the JSON payload as a string

The response of the above will be [PROPERTY1, PROPERTY2]