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

如何去除无键值JSON数组的双引号并传递无多余引号的数组

解决JSONArray转字符串后外层带多余双引号的问题

问题分析

你遇到的情况是JSONArray调用toString()后,输出的字符串被额外的双引号包裹(如"["XXXXXXXX"]"),但预期格式是["XXXXXXXX"]。这种情况大概率是日志框架的显示效果(日志为了标识字符串类型自动添加了外层引号),而非JSONArray.toString()的实际返回值问题;少数情况是使用的JSON库实现异常。

解决方案

1. 验证实际字符串内容

先绕过日志,直接打印到控制台确认toString()的真实返回值:

JSONArray array = new JSONArray();
array.put(newUserId);
String jsonStr = array.toString();
// 直接控制台打印,看真实内容
System.out.println("实际字符串内容:" + jsonStr);

如果控制台输出是["XXXXXXXX"],说明日志里的外层引号是日志框架的显示标记,实际字符串是符合要求的,直接传递jsonStr即可。

2. 手动去除外层双引号(仅当真实返回带引号时)

确认真实字符串确实带有外层双引号的话,可通过正则替换去掉首尾的双引号:

String jsonStr = array.toString().replaceAll("^\"|\"$", "");

3. 切换标准JSON库(推荐)

如果使用的是非标准JSON库导致异常,建议切换到主流库,比如:

使用Jackson:

import com.fasterxml.jackson.databind.ObjectMapper;

ObjectMapper mapper = new ObjectMapper();
JSONArray array = new JSONArray();
array.put(newUserId);
String jsonStr = mapper.writeValueAsString(array);

使用Gson:

import com.google.gson.Gson;

Gson gson = new Gson();
JSONArray array = new JSONArray();
array.put(newUserId);
String jsonStr = gson.toJson(array);

主流库的序列化方法会严格生成符合JSON规范的数组字符串,不会出现多余外层引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:32:52