6

Web サービスに送信する JSON 文字列を作成しています。部分の 1 つはユーザーが入力するため、二重引用符が使用される可能性があります。エスケープすることで問題を解決しようとしています。

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""}

どうすればこれを正しく行うことができますか?

注: 私の Web サイトがこの値を保存して表示すると、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 に答える