JSON に入力する必要があるデータベースからの文字列値を取得しましたが、値には一重引用符と二重引用符を含めることができます。簡単に聞こえますよね?どうやら Java 1.4.2 にはありません。なぜ 1.4.2 にしなければならないのかを説明しないでください。私はこれを別の開発者から継承しましたが、私の制御が及ばない要因により、このプロジェクトをまだ更新できません。:)
だから、私はこれらすべてを試しました(そして結果を見るためだけに他の多くのものを試しました):
"sample user's string".replaceAll("'", "\'") // returns "sample user's string"
"sample user's string".replaceAll("'", "\\'") // returns "sample user's string"
"sample user's string".replaceAll("'", "\\\'") // returns "sample user's string"
"sample user's string".replaceAll("'", "\\\\'") // returns "sample user\\'s string"
"sample user's string".replaceAll("'", "%%") // returns "sample user%%s string"
私が欲しいのはsample user\'s string
、何が間違っているのですか?残念ながら 1.4.2 には String.replace(String,String) 関数がありません。
編集: json-simple
JSON ライブラリを使用しており、結果の JSON 文字列で上記のコマンドの出力を見ていました。JSON が出力される前に値を確認するために追加のデバッグ情報を追加しました。上記のコマンドは実際に機能しているように見えますが、json-simple
ライブラリはエスケープ文字を削除しています。
だから、私が見ているのは:
"sample user's string".replaceAll("'", "\\\\'") // sample user\'s string
myJSONObject.put("value", "sample user's string".replaceAll("'", "\\\\'")) // sample user\\'s string"
myJSONObject.put("value", "sample user's string") // sample user's string
そのため、ライブラリは期待どおりに機能していないようです。これを使用したことのある人json-simple
は、これに対する回避策を知っていますか?