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

Java中如何将String类型JSON数组字符串转换为数组或ArrayList

Java JSON数组字符串转数组/列表实现方案

你给出的字符串是标准JSON数组格式,无需手动解析,直接使用Java生态主流的JSON处理库即可完成转换,下面是两种最常用的实现方案:

方案1:使用Jackson(Java生态通用JSON解析库)

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;

// 自定义实体类,字段和JSON对象的键一一对应
class CustomEntity {
    private String id;
    private String name;
    // 必须提供public无参构造方法、对应字段的getter/setter
    public CustomEntity() {}
    // 此处省略getter、setter代码
}

public class ParseDemo {
    public static void main(String[] args) throws Exception {
        String input = "[{\"id\":\"1\",\"name\":\"test1\"}, {\"id\":\"2\",\"name\":\"test2\"}]";
        ObjectMapper objectMapper = new ObjectMapper();
        // 转换为列表
        List<CustomEntity> entityList = objectMapper.readValue(input, new TypeReference<List<CustomEntity>>() {});
        // 转换为数组
        CustomEntity[] entityArray = objectMapper.readValue(input, CustomEntity[].class);
    }
}

方案2:使用Gson(轻量JSON解析库)

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.List;

class CustomEntity {
    private String id;
    private String name;
}

public class ParseDemo {
    public static void main(String[] args) {
        String input = "[{\"id\":\"1\",\"name\":\"test1\"}, {\"id\":\"2\",\"name\":\"test2\"}]";
        Gson gson = new Gson();
        // 转换为列表
        List<CustomEntity> entityList = gson.fromJson(input, new TypeToken<List<CustomEntity>>(){}.getType());
        // 转换为数组
        CustomEntity[] entityArray = gson.fromJson(input, CustomEntity[].class);
    }
}

注意事项

  • 如果不需要映射为自定义实体,可以直接解析为通用结构:Jackson可解析为List<Map<String, Object>>,Gson可解析为List<JsonObject>,直接对应JSON原生结构。
  • 禁止手动通过字符串拆分、正则匹配的方式解析JSON,否则会出现JSON值内包含逗号、括号时解析错误的问题,使用成熟JSON解析库是唯一稳妥方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:36:03