Java Массив с несколькими Json объектами, преобразование в List Hashmap - PullRequest
1 голос
/ 18 июня 2020

Обычно у меня есть ответ api, как показано ниже:

{
  "body": [
    {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3",
      "key4": "value4"
    },
    {
      "key1": "value1",
      "key2": "value2",
      "key3": "value3",
      "key4": "value4"
    },
    ...
  ]
}

Я хочу преобразовать его в список ha sh map для каждого объекта выше. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Вы можете обратиться к приведенному ниже коду, чтобы получить представление. В первых нескольких строках кода я создал json, как вы говорите. Но если вы получите ответ json от RestTemplate, вы можете просто получить его как JSONObject. Затем вы можете создать метод для анализа этого JSONObject и вернуть список карт, как показано в приведенном ниже коде.

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONObject;

public class JsonObject {

    public static void main(String[] args) {
        JSONObject mainObj = new JSONObject();
        JSONArray bodyArray = new JSONArray();

        JSONObject element1 = new JSONObject();
        element1.accumulate("key1", "value1");
        element1.accumulate("key2", "value2");
        element1.accumulate("key3", "value3");
        element1.accumulate("key4", "value4");

        JSONObject element2 = new JSONObject();
        element2.accumulate("key21", "value21");
        element2.accumulate("key22", "value22");
        element2.accumulate("key23", "value23");
        element2.accumulate("key24", "value24");

        bodyArray.put(element1);
        bodyArray.put(element2);
        //System.out.println(bodyArray);

        mainObj.put("body", bodyArray);

        System.out.println(mainObj);

        List<Map<String, String>> mapList = new ArrayList<Map<String,String>>();
        JSONArray gotArray = (JSONArray) mainObj.get("body");
        for(int i=0; i<gotArray.length(); i++) {
            JSONObject obj = gotArray.getJSONObject(i);

            Map<String, String> object = new HashMap<String,String>();

            for(String key : obj.keySet()) {
                object.put(key, obj.getString(key));
            }

            mapList.add(object);
        }

        System.out.println(mapList);

    }
}
0 голосов
/ 18 июня 2020

Просто используйте GenSON . Функция parseKeys(String json) возвращает HashMap. Ссылка на библиотеку: https://github.com/EvgeniGenchev/GenSON-lib Я создал библиотеку для этого конкретного c варианта использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...