如何移除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
相关产品推荐
相关产品推荐

