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 が二重引用符ではなくスラッシュをエスケープするのはなぜですか?????