我正在使用 gson 將 pojo 轉(zhuǎn)換為 json 字符串。在該字符串上,我想刪除某些字符,然后再轉(zhuǎn)換回 pojo。我的目標(biāo)是從 pojo 中刪除這些字符。我希望這個(gè)函數(shù)是通用的,因?yàn)樗鼘⒂糜诓煌愋偷?pojo。我嘗試過使用 jackson 和 gson 將 pojo 轉(zhuǎn)換為字符串,但沒有一個(gè)起作用public <T> T sanitise(T object, Class<T> class){
return gson.fromJson(gson.toJson(object).replaceAll("[\\s]", ""), class);
}我得到這個(gè):{"field1":"entry","field2":"\tentry\t","field3":"entry\tentry","field4":["\tentry\t","\tentry\tentry\t","entry"]}的輸出gson.toJson(pojo, pojoClass)。我想要這個(gè) {"field1":"entry","field2":"entry","field3":"entryentry","field4":["entry","entryentry","entry"]}:pojo 是某個(gè) pojoClass 的對(duì)象。.replaceAll("[\\s]", "")當(dāng)我傳遞字符串"\t\r\ndummy"但不處理輸出時(shí)有效gson.toJson()
1 回答

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