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

如何用Gson将JS字符串化值转换为Java中的List?

问题分析与解决

你的输入字符串"[\"value0\"]"本质是一个包含JSON数组的字符串(外层被双引号包裹,内部才是真正的数组结构),直接用Gson解析成List<String>会失败——因为Gson会把整个输入识别为字符串类型,而非数组类型,这就是报错Expected BEGIN_ARRAY but was STRING的核心原因。

解决思路与实现

方式一:先解析为字符串再转数组(推荐)

利用Gson自动处理转义的特性,先把整个输入解析成字符串(得到内部的纯JSON数组字符串),再将其解析为List<String>,无需手动处理转义或截取:

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

public class Demo {
    public static void main(String[] args) {
        String stringifiedList = "\"[\\\"value0\\\"]\""; // 你的原始输入
        
        Gson gson = new Gson();
        // 第一步:解析得到内部的JSON数组字符串
        String innerArrayStr = gson.fromJson(stringifiedList, String.class);
        // 第二步:将数组字符串解析为List<String>
        ArrayList<String> values = gson.fromJson(innerArrayStr, new TypeToken<ArrayList<String>>(){}.getType());
        
        // 验证结果
        System.out.println(values); // 输出: [value0]
    }
}

方式二:手动处理字符串后解析

如果需要手动处理输入字符串,可先去除外层双引号,再替换内部的转义字符,得到纯JSON数组后再解析:

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

public class Demo {
    public static void main(String[] args) {
        String stringifiedList = "\"[\\\"value0\\\"]\"";
        
        // 去除首尾双引号,替换转义的双引号
        String pureJsonArray = stringifiedList.substring(1, stringifiedList.length() - 1)
                .replace("\\\"", "\"");
        
        Gson gson = new Gson();
        ArrayList<String> values = gson.fromJson(pureJsonArray, new TypeToken<ArrayList<String>>(){}.getType());
        
        System.out.println(values); // 输出: [value0]
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:10:26