我有一個字符串值來自必須放入JSON的數據庫,但該值可以包含單引號和雙引號。聽起來很簡單,對吧?那麼,顯然不是在Java 1.4.2中。不要讓我開始爲什麼它必須是1.4.2,我從另一個開發人員那裏繼承了這一點,並且由於無法控制的因素,我們無法更新此項目。 :)Java 1.4 String.replaceAll單引號問題
所以,我已經嘗試了所有的這些(和許多其他人只是看到的結果):
"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
知道此解決方法?
我同意不應該手動完成。我們使用'json-simple' JSON庫('GSON'庫與Java 1.4.2不兼容),沒有手動轉義,單引號不會被庫轉義。編輯問題的細節以反映這一點。 – Kettch19
@ Kettch19:你是如何診斷報價沒有發生的?如果你不小心,我可以很容易地看到這是一個診斷問題,而不是其他問題。或者,也許json-simple很聰明,如果真的需要的話,也只是逃避引號。通過將包含單引號的字符串放入雙引號字符串中,反之亦然。 –
我正在通過'log4j'輸出查看痕跡。 'json-simple'調用正在逃避其他字符,例如正斜槓,但出於某種原因,對於單引號沒有任何作用。事實上,當我把它們放入時,我的手動轉義序列正在無法使用。 – Kettch19