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

处理JSONArray含的字符串,避免引号多余转义斜杠

解决JSONArray处理时的转义斜杠问题

你的问题根源在于把JSON对象直接转成字符串处理后再放回数组,这会让原本的JSON结构变成普通字符串,序列化后自然会出现多余的转义引号。咱们换个思路,直接操作JSON元素本身,而不是绕到字符串层面,就能解决这个问题。

为什么原来的方法不行?

当你调用jsonObj.toString()时,你拿到的是该JSON对象的字符串表示(比如"{\"Line 0\":\"4\"}"),然后把这个字符串塞进新的JSONArray,此时数组里存的是字符串类型,而非JSONObject类型。当最终序列化整个JSON时,字符串里的引号会被自动转义,就出现了你看到的"{\"Line 0\":\"4\"}"这种结果。

正确的处理方式:直接操作JSON结构

我们需要根据JSON元素的类型(JSONObject、String、JSONArray等)分别处理,递归清理其中的\u0000字符,确保处理后的元素仍然是原有的JSON类型,而非字符串。

下面是修改后的代码:

JSONArray newQueryArray = new JSONArray();
for (Object jsonObj : queryArray) {
    Object cleanedElement = cleanJsonContent(jsonObj);
    newQueryArray.put(cleanedElement);
}

// 递归清理JSON元素中的空字符
private static Object cleanJsonContent(Object element) {
    if (element instanceof JSONObject) {
        JSONObject originalObj = (JSONObject) element;
        JSONObject cleanedObj = new JSONObject();
        
        for (String key : originalObj.keySet()) {
            Object value = originalObj.get(key);
            // 递归处理值,支持嵌套的JSON结构
            cleanedObj.put(key, cleanJsonContent(value));
        }
        return cleanedObj;
    } else if (element instanceof String) {
        String originalStr = (String) element;
        // 移除实际的空字符(\u0000)
        return originalStr.replace("\u0000", "");
    } else if (element instanceof JSONArray) {
        JSONArray originalArray = (JSONArray) element;
        JSONArray cleanedArray = new JSONArray();
        
        for (Object item : originalArray) {
            cleanedArray.put(cleanJsonContent(item));
        }
        return cleanedArray;
    } else {
        // 数字、布尔值等类型不会包含空字符,直接返回
        return element;
    }
}

代码说明:

  1. 递归处理:支持嵌套的JSON结构(比如JSONObject里的JSONArray,或者多层嵌套的对象),确保所有层级的\u0000都被清理。
  2. 保留类型:处理后的元素仍然是原有的JSON类型(JSONObject、String等),而非字符串,所以加入新数组后,序列化出来的结构就是你期望的{ "Line 0": "4" }。
  3. 精准清理:只替换实际的空字符\u0000,不需要处理\\u0000(那是字符串里的转义写法,实际JSON中的空字符不会以这种形式存在)。

这样处理后,你的query字段就能得到期望的数组结构,不会再出现多余的转义斜杠了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:37:26