gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:35:39 26 4
gpt4 key购买 nike

我正在使用 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()

最佳答案

你说当你传递Java字符串文字"\t\r\ndummy"时它就起作用了,但那是因为 \t , \r ,和\n已转换为TAB , CR ,和LF Java 编译器生成的字符,生成字符串 <TAB><CR><LF>dummy .

你说使用正则表达式时不起作用 "\\s"输入包含 "field2":"\tentry\t" ,但那是因为 \t有两个字符 \t ,而不是 TAB性格。

如果您想消除文本 \t ,那么你需要正则表达式 "\\\\t" ,这是正则表达式 \\t 的 Java 字符串文字,这意味着\字符后跟 t性格。

使用replaceAll("\\\\t", "")而不是replaceAll("[\\s]", "") .

关于java - 正则表达式删除某些对使用 gson 从 pojo 获取的 json 字符串不起作用的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57697033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com