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

如何移除JsonObject中数组格式字符串的首尾引号?

我明白你遇到的问题了——你的JSON里Table字段的值其实是个被双引号包裹的字符串化JSON数组,而不是原生的JSON数组,所以直接用JsonElement解析时会被识别为字符串类型,没法直接当成数组操作。下面给你两种靠谱的解决办法,都是用Java常用的JSON处理库来处理:

方案1:使用Jackson库

这是Java生态里非常流行的JSON处理库,步骤很清晰:先解析整个JSON拿到Table的字符串值,再把这个字符串重新解析成JSON数组,就能正常操作了。

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonProcessor {
    public static void main(String[] args) throws Exception {
        // 你的原始JSON字符串
        String originalJson = "{\"Table\":\"[{\\\"FailureIds\\\":\\\"\\\",\\\"SuccessIds\\\":\\\"1167, 8789, 10764, 11935, 937, 938, 939, 940, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, 3990, 3991, 6045, 6046, 6047, 6048, 6049, 6050, 6051, 7453, 7454, 7455, 7456, 7457, 8559, 8560, 8561, 8562, 10432, 10433, 10434, 10435, 10436, 10437, 10438, 11705, 11706, 11707, 11708\\\"}]\"}";
        
        ObjectMapper mapper = new ObjectMapper();
        // 第一步:解析整个JSON对象
        JsonNode rootNode = mapper.readTree(originalJson);
        // 第二步:提取Table字段的字符串值(自动去掉外层的双引号)
        String tableString = rootNode.get("Table").asText();
        
        // 第三步:把字符串重新解析成JSON数组
        JsonNode tableArray = mapper.readTree(tableString);
        
        // 现在就可以正常访问数组里的内容了
        JsonNode firstEntry = tableArray.get(0);
        String successIds = firstEntry.get("SuccessIds").asText();
        System.out.println("提取到的SuccessIds: " + successIds);
    }
}
方案2:使用Gson库

如果你项目里用的是Google的Gson库,操作逻辑类似:

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class GsonProcessor {
    public static void main(String[] args) {
        String originalJson = "{\"Table\":\"[{\\\"FailureIds\\\":\\\"\\\",\\\"SuccessIds\\\":\\\"1167, 8789, 10764, 11935, 937, 938, 939, 940, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, 3990, 3991, 6045, 6046, 6047, 6048, 6049, 6050, 6051, 7453, 7454, 7455, 7456, 7457, 8559, 8560, 8561, 8562, 10432, 10433, 10434, 10435, 10436, 10437, 10438, 11705, 11706, 11707, 11708\\\"}]\"}";
        
        // 解析整个JSON对象
        JsonObject rootObj = JsonParser.parseString(originalJson).getAsJsonObject();
        // 提取Table的字符串值
        String tableString = rootObj.get("Table").getAsString();
        
        // 将字符串解析为JSON数组
        JsonArray tableArray = JsonParser.parseString(tableString).getAsJsonArray();
        
        // 访问数组内的元素
        JsonObject firstEntry = tableArray.get(0).getAsJsonObject();
        String successIds = firstEntry.get("SuccessIds").getAsString();
        System.out.println("提取到的SuccessIds: " + successIds);
    }
}
额外小技巧:直接修正原始JSON字符串(不推荐)

如果你只是想快速修改原始字符串去掉前后引号,可以用字符串替换,但这种方法只适合固定结构的JSON,一旦结构变化容易出错:

String fixedJson = originalJson.replace("\"[{\"", "[{\"").replace("\"}]\"", "}]");

还是更推荐用JSON库解析的方式,容错性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:54:31