如何从gson生成的字符串中转义或删除“\”?

cwdobuhd  于 2022-12-29  发布在  其他
关注(0)|答案(2)|浏览(263)

我正在从属性文件中加载一个值,然后将其传递给gson方法,以便将其转换为最终的json对象。但是,来自属性文件的值带有双引号,gson将其添加到输出中。我已经扫描了整个Web,但无法找到解决方案
属性文件包含

0110= This is a test for the renewal and the "Renewal no:"

这是我的密码

public String toJSONString(Object object) {
    GsonBuilder gsonBuilder = new GsonBuilder();
    Gson gson = gsonBuilder.create();
    //Note object here is the value from the property file
    return gson.toJson(object);
}

这就产生了

"{ResponseCode:0110,ResponseText:This is a test for the renewal and the \"Renewal no:\"}"

我不确定在输出中,为什么要在文本周围添加或 Package \,或者在属性文件值中的什么地方使用双引号?

um6iljoc

um6iljoc1#

根据对您的问题的评论,object参数实际上引用了值为

{ResponseCode:0110,ResponseText:This is a test for the renewal and the "Renewal no:"}

我不能说为什么,但这就是String所包含的内容。
String是一个特殊类型,Gson将其解释为JSON字符串。由于"是一个特殊字符,必须在JSON字符串中进行转义,因此Gson会执行此操作并生成JSON字符串。

"{ResponseCode:0110,ResponseText:This is a test for the renewal and the \"Renewal no:\"}"
dbf7pr2w

dbf7pr2w2#

字符\正在转义字符串中的特殊字符,如“”。不能在没有前导的字符串中存储“”。它必须是"。
当显示任何输出字符串时,可以删除斜线。
Apache Commons有一个处理转义和非转义字符串的库:https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html

相关问题