You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将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,避免依赖ModelMapper的自动映射:

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:40:03