我正在使用 gson 將 pojo 轉換為 json 字符串。在該字符串上,我想刪除某些字符,然后再轉換回 pojo。我的目標是從 pojo 中刪除這些字符。我希望這個函數是通用的,因為它將用于不同類型的 pojo。我嘗試過使用 jackson 和 gson 將 pojo 轉換為字符串,但沒有一個起作用public <T> T sanitise(T object, Class<T> class){
return gson.fromJson(gson.toJson(object).replaceAll("[\\s]", ""), class);
}我得到這個:{"field1":"entry","field2":"\tentry\t","field3":"entry\tentry","field4":["\tentry\t","\tentry\tentry\t","entry"]}的輸出gson.toJson(pojo, pojoClass)。我想要這個 {"field1":"entry","field2":"entry","field3":"entryentry","field4":["entry","entryentry","entry"]}:pojo 是某個 pojoClass 的對象。.replaceAll("[\\s]", "")當我傳遞字符串"\t\r\ndummy"但不處理輸出時有效gson.toJson()
1 回答

弒天下
TA貢獻1818條經驗 獲得超8個贊
您說它在傳遞 Java 字符串文字時有效"\t\r\ndummy"
,但那是因為\t
, \r
, 和\n
已被 Java 編譯器轉換為TAB
, CR
, 和字符,從而產生 string 。LF
<TAB><CR><LF>dummy
"\\s"
您說當使用包含 的輸入的正則表達式時它不起作用"field2":"\tentry\t"
,但那是因為\t
有兩個字符\
和t
,而不是該TAB
字符。
如果你想消除text \t
,那么你需要 regex "\\\\t"
,它是 regex 的 Java 字符串文字\\t
,表示該\
字符后面跟著該t
字符。
使用replaceAll("\\\\t", "")
而不是replaceAll("[\\s]", "")
.
添加回答
舉報
0/150
提交
取消