arrays.tostring不能解析json数组,仅将java数组转为字符串表示;解析json必须使用专用库如gson、jackson或org.json,二者功能不可混淆。

Arrays.toString 不能解析 JSON 数组格式,它只是把 Java 数组转成字符串表示,不处理 JSON 语法或解析逻辑。
Arrays.toString 的真实作用
这个方法只适用于已有的 Java 数组对象(如 String[]、int[]),将数组内容按固定格式转为字符串,例如:
Arrays.toString(new String[]{"a", "b", "c"}) → "[a, b, c]"
它不识别引号、逗号、方括号是否符合 JSON 规则,也不做任何解析、校验或转换。
JSON 数组需要专用解析器
真正要“解析”JSON 字符串(比如 "[\"apple\",\"banana\"]"),必须用 JSON 解析库:
- 用 org.json:new JSONArray(jsonString)
- 用 com.fasterxml.jackson:ObjectMapper.readValue(jsonString, String[].class)
- 用 Google Gson:new Gson().fromJson(jsonString, String[].class)
常见误用场景
有人把 JSON 字符串直接传给 Arrays.toString,结果得到:
Arrays.toString("[\"a\",\"b\"]") → "[[, ", ", ", ", ", "]"]
这是因为字符串被当成了 char[] 处理,每个字符单独转义,完全不是预期效果。
正确流程示例(以 Gson 为例)
如果拿到的是 JSON 字符串 "[\"name\",\"age\",\"city\"]",想转成 Java 字符串数组:
- 先用 Gson 解析成 String[]:String[] arr = new Gson().fromJson(jsonStr, String[].class)
- 再用 Arrays.toString(arr) 查看内容(仅用于调试或日志输出)
不复杂但容易忽略:解析和格式化是两件事,别混用。











