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

JSONObject的put操作为何会将字符串化数组转换为JSONArray?如何阻止该转换?

解决JSONObject自动解析字符串化为JSONArray的问题

我懂你的困扰——当你尝试把字符串形式的数组"[1,2]"存入JSONObject时,它会自动将其解析成JSONArray类型,完全打乱了你想保留原字符串格式的需求。

问题根源

org.json库的JSONObject.put()方法自带了一个“智能”校验逻辑:如果传入的字符串符合JSON数组/对象的格式,它会自动将其解析为对应的JSONArray或JSONObject类型,而不是老老实实把它当作普通字符串存储。

解决方案

要让JSONObject把你的字符串当作纯文本保存,最直接的办法是用JSONObject.quote()方法对字符串进行转义处理,这样就能绕过自动解析机制。

示例代码

import org.json.JSONObject;

public class Main {
    public static void main(String[] args) {
        JSONObject jsonObj = new JSONObject();
        // 用quote方法转义字符串,阻止自动解析
        jsonObj.put("stringified_array", JSONObject.quote("[1,2]"));
        System.out.println(jsonObj.toString());
        // 输出结果:{"stringified_array":"[1,2]"}
    }
}

效果验证

运行这段代码后,jsonObj里的stringified_array值会保持为字符串类型的"[1,2]",再也不会被自动转换成JSONArray了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:32:51