为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式删除某些对使用 gson 从 pojo 获取的 json 字符串不起作用的字符

正则表达式删除某些对使用 gson 从 pojo 获取的 json 字符串不起作用的字符

qq_笑_17 2023-06-21 15:41:11
我正在使用 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 编译器转换为TABCR, 和字符,从而产生 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]", "").


查看完整回答
反对 回复 2023-06-21
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信