6

我正在构建一个 JSON 字符串以发送到我的 Web 服务。由于其中一个部分是用户输入的,因此可能会出现双引号。我试图通过逃避它来解决这个问题。

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 转义斜杠而不是双引号??????

4

1 回答 1

2

看来罪魁祸首是json.toString()

当我调用 replaceAll 方法时,它——正确——只转义双引号。它似乎json.toString()逃脱了斜线。要解决这个问题,我必须这样做json.toString().replace("\\\\", "")

这就引出了一个问题:为什么 JSONObject 转义斜杠而不是双引号??????

于 2012-11-16T17:25:46.877 回答