Получите имя объекта массива с уверенностью

Пример JSON

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

Я хочу иметь массив [PROPERTY1, PROPERTY2]

Как я могу сделать это с помощью надежного экстрактора пути JSON?

.extract().path("collect{it.value}"); //it's not working

person Norayr Sargsyan    schedule 14.05.2021    source источник


Ответы (1)


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

Код довольно понятен, дайте мне знать иначе, и я добавлю больше комментариев

    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);

Обязательно извлеките полезную нагрузку JSON в виде строки

Ответом выше будет [PROPERTY1, PROPERTY2]

person Wilfred Clement    schedule 14.05.2021