#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