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

如何将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库

  1. 先引入Gson依赖(以Maven为例,Gradle可对应调整):
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version> <!-- 建议使用最新稳定版 -->
</dependency>
  1. 解析代码示例:
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库

  1. 引入Jackson依赖(Maven):
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version> <!-- 建议使用最新稳定版 -->
</dependency>
  1. 解析代码示例:
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:38:51