我正在构建一个 JSON 字符串以发送到我的网络服务。由于其中一个 fragment 是用户输入的,因此有可能使用双引号。我正在尝试通过转义来解决问题。
String strValue = "height of 6\"";
JSONObject json = new JSONObject();
json.put("key", strValue.replaceAll("\"","\\\""));
这里的问题是当我执行 json.toString()
时,我得到了 3 个斜杠。
例如:
{"key","height of 6\\\""}
如果我不尝试进行任何替换,json.toString()
会给我损坏的 json。
例如:
{"key", "height of 6""}
我怎样才能正确地做到这一点?
注意:当我的网站保存这个值并显示时,显示的是height of 6\"
更新:
看来罪魁祸首是 json.toString()
当我调用 replaceAll
方法时,它——正确地——只转义了双引号。 json.toString()
似乎转义了斜线。要解决此问题,我必须执行 json.toString().replace("\\\\", "")
。这就引出了一个问题:到底为什么 JSONObject 会转义斜线而不是双引号?????
最佳答案
看来罪魁祸首是 json.toString()
当我调用 replaceAll 方法时,它——正确地——只转义了双引号。 json.toString()
似乎转义了斜线。要解决此问题,我必须执行 json.toString().replace("\\\\", "")
。
这引出了一个问题:到底为什么 JSONObject 转义斜杠而不转义双引号?????
关于java - 在 JSONObject 中填充引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13420115/