无法将JSONArray转换为List<Map<String, String>>的问题求助
解决JSONArray转List<Map<String, String>>的ModelMapper报错问题
错误原因
报错核心是List是接口,没有无参构造函数,ModelMapper无法直接实例化接口类型,必须指定具体的List实现类(如ArrayList)。
解决方案
方案1:指定具体的List实现类类型
修改TypeToken的泛型为具体的ArrayList,让ModelMapper明确要实例化的对象类型:
Type listType = new TypeToken<ArrayList<Map<String, String>>>() {}.getType(); List<Map<String, String>> maps = modelMapper.map(jsonArray, listType);
方案2:先转成数组再包装为List
先将JSONArray映射为Map数组,再转换为List:
Map<String, String>[] mapArray = modelMapper.map(jsonArray, Map[].class); List<Map<String, String>> maps = new ArrayList<>(Arrays.asList(mapArray));
方案3:手动遍历转换(无需ModelMapper)
直接操作JSONArray和JSONObject,手动构建List
List<Map<String, String>> maps = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj = jsonArray.getJSONObject(i); Map<String, String> map = new HashMap<>(); for (String key : obj.keySet()) { map.put(key, obj.getString(key)); } maps.add(map); }
内容的提问来源于stack exchange,提问作者Cody
相关产品推荐
相关产品推荐

