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
相关产品推荐
相关产品推荐

