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
相关产品推荐
相关产品推荐

