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

Java中如何将JSON读取到的各键值正确添加到ArrayList中

你遇到的类型转换错误本质是因为JSON中不同类型的值反序列化后对应不同的Java类型,包括嵌套对象对应LinkedHashMap、数组对应List、布尔值对应Boolean、数字对应Integer,无法直接强转为String。

你可以用Jackson自带的序列化方法把任意类型的值转为JSON格式字符串存入列表,修正后代码如下:

try {
    // create object mapper instance
    ObjectMapper mapper = new ObjectMapper();

    // convert JSON file to map
    Map<?, ?> map = mapper.readValue(Paths.get("user.json").toFile(), Map.class);

    ArrayList<String> data = new ArrayList<>();
    
    // 遍历所有键值对
    for (Map.Entry<?, ?> entry : map.entrySet()) {
        Object value = entry.getValue();
        // 将任意类型的value序列化为JSON字符串
        String strValue = mapper.writeValueAsString(value);
        data.add(strValue);
    }
} catch (Exception ex) {
    ex.printStackTrace();
}

转换后列表中各元素的结果:

  • meta字段对应的字符串为 {"stock":"AWS","date modified":90}
  • roles字段对应的字符串为 ["Member","Admin"]
  • admin字段对应的字符串为 true
  • 其余原生字符串类型的字段值保持不变

如果你不需要标准JSON格式的字符串,也可以用String.valueOf(value)代替mapper.writeValueAsString(value),直接获取值的普通字符串形式。如果不需要限制列表元素为String类型,也可以直接声明ArrayList<Object>直接存入原始值,后续使用时再做类型判断即可。

内容的提问来源于stack exchange,提问作者Wilhelmo Gutred

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:15:08