如何将JSON数组格式字符串解析为Java String[]并遍历?
解决JSON数组字符串解析为
String[]的问题 嘿,我懂你现在的困扰了——你当前的代码只是把整个JSON数组字符串当成了String[]的单个元素,并没有真正解析JSON的结构,所以才会打印出长度1而不是预期的3。
问题出在哪?
你写的这行代码:
String[] contentUrlList = new String[] { value };
本质上是创建了一个只有一个元素的数组,这个元素就是完整的JSON字符串["abc", "xyz", "123"],完全没有处理里面的数组结构。
正确的解决方法:用JSON解析库
Java本身没有内置的JSON解析工具,所以我们通常用成熟的第三方库来处理,比如Gson或者Jackson,这两个都是业界常用的选择。
方案1:使用Gson库
- 先引入Gson依赖(以Maven为例,Gradle可对应调整):
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> <!-- 建议使用最新稳定版 --> </dependency>
- 解析代码示例:
import com.google.gson.Gson; public class JsonParserDemo { public static void main(String[] args) { // 传入的JSON数组字符串 String value = "[\"abc\", \"xyz\", \"123\"]"; // 初始化Gson实例 Gson gson = new Gson(); // 直接解析为String[] String[] contentUrlList = gson.fromJson(value, String[].class); // 遍历数组 for (String contentUri : contentUrlList) { System.out.println("解析得到的元素:" + contentUri); } // 现在打印长度就是3了 System.out.println("数组长度:" + contentUrlList.length); } }
方案2:使用Jackson库
- 引入Jackson依赖(Maven):
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> <!-- 建议使用最新稳定版 --> </dependency>
- 解析代码示例:
import com.fasterxml.jackson.databind.ObjectMapper; public class JsonParserDemo { public static void main(String[] args) throws Exception { // 传入的JSON数组字符串 String value = "[\"abc\", \"xyz\", \"123\"]"; // 初始化ObjectMapper实例 ObjectMapper objectMapper = new ObjectMapper(); // 解析为String[] String[] contentUrlList = objectMapper.readValue(value, String[].class); // 遍历数组 for (String contentUri : contentUrlList) { System.out.println("解析得到的元素:" + contentUri); } // 现在打印长度就是3了 System.out.println("数组长度:" + contentUrlList.length); } }
关于手动解析的提醒
如果你不想用第三方库,理论上可以手动处理:去掉字符串首尾的[],按逗号分割,再去掉每个元素的引号。但这种方法非常脆弱——如果你的JSON字符串里包含转义的引号(比如["a\"bc", "x,y,z"]),手动解析就会出错。所以强烈推荐用成熟的JSON库,避免踩坑。
内容的提问来源于stack exchange,提问作者el323
相关产品推荐
相关产品推荐

