Как преобразовать карту списка в строку json и json в карту списка

#java #android #arrays #android-activity

#java #Android #массивы #android-активность

Вопрос:

Я хочу преобразовать карту списка в json (первое действие), затем json в карту списка (третье действие) Я использую встроенную библиотеку json, не использую стороннюю библиотеку

Код для преобразования карты списка в json

         {
            
            
        }
        else
        {
            HashMap<Object, Object> map = new HashMap<>();
            
            map.put("title",list_string_title);
            map.put("id",list_string_id);
            JSONObject jsonObject = new JSONObject(map);
            
            FileUtils.writeFile(getPathData(scr_id),jsonObject.toString());
        }
 

Когда программа найдет файл json
Я хочу, чтобы он добавил его в ListMap

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

1. Покажите нам, что вы пробовали до сих пор

2. Я показал свой код

3. Вам нужна эта карта JSON для списка<Карта<<Строка, объект>>?

4. Да, мне это нужно.

Ответ №1:

Вы можете выполнить итерацию по JSONObject и добавить его на карту, в вашем случае вашим значением является список, он будет обрабатываться как JSONArray, вы можете попробовать следующий код

 public Map<Object, Object> jsonToMap(JSONObject jsonObject) throws JSONException {

        Iterator<String> itr = jsonObject.keys();   
        Map<Object, Object> mapFromJSON = new HashMap<Object,Object>();
        
        while(itr.hasNext()) {
            Object key = itr.next();
            JSONArray jsonArray = (JSONArray) jsonObject.get((String) key);
            ArrayList list = new ArrayList<Object>();
            
            for(int i=0; i< jsonArray.length(); i  ) {
                list.add(jsonArray.get(i));
            }
            mapFromJSON.put(key, list); 
        }
        return mapFromJSON;
    }
 

если ваш список содержит JSONObject, вы можете использовать рекурсию.

Ответ №2:

Необходимо передать TypeReference в readValue с вашим типом вывода

 ObjectMapper mapper = new ObjectMapper();
List<Map<String, Object>> data = mapper.readValue(json, new TypeReference<List<Map<String, Object>>>(){});
 

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

1. Моя среда разработки не может найти класс ObjectMapper