如何正确将JSON数组格式String字符串转换为ArrayList<String>
问题原因
你当前的输入是标准JSON数组格式的字符串,直接按逗号分割只会拆分元素边界,无法自动过滤首尾的方括号、每个元素外层包裹的双引号,所以会出现多余符号。
解决方案
优先推荐使用JSON解析库处理,兼容性最强,即使元素包含逗号、转义引号等特殊字符也可以正常解析;如果场景固定无特殊字符,也可以用纯字符串处理实现。
方案1:使用JSON解析库(推荐)
以Gson为例:
- 引入Gson依赖(Maven示例)
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> </dependency>
- 转换代码
import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.util.List; // 核心转换逻辑 Gson gson = new Gson(); List<String> logopath = gson.fromJson(pos, new TypeToken<List<String>>(){}.getType());
以Jackson为例:
- 引入Jackson依赖(Maven示例)
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency>
- 转换代码
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; // 核心转换逻辑 ObjectMapper objectMapper = new ObjectMapper(); List<String> logopath = objectMapper.readValue(pos, new TypeReference<List<String>>() {});
方案2:纯字符串处理(仅适合无特殊字符的简单场景)
如果确认所有元素都不含转义引号、逗号等特殊符号,可以直接对字符串做裁剪清洗后拆分:
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; // 先去掉首尾的方括号 String content = pos.replaceAll("^\\[|\\]$", ""); // 按逗号拆分后清洗每个元素两端的双引号 List<String> logopath = Arrays.stream(content.split("\\s*,\\s*")) .map(s -> s.replaceAll("^\"|\"$", "")) .collect(Collectors.toList()); // JDK16及以上可以直接用.toList()代替collect方法
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

