如何逃避或删除" \"从gson生成的字符串?

时间:2016-06-21 21:07:53

标签: java json string gson

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

属性文件包含

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:\"}"

我不确定在输出中,为什么在文字周围添加或包装\或者在属性文件值中有双引号?

2 个答案:

答案 0 :(得分:3)

根据您对问题的评论,object参数实际上引用了值为{/ p>的Java String

{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:\"}"

答案 1 :(得分:2)

\字符正在转义特殊字符,例如“在字符串中。你不能在没有前导的字符串中存储”。它必须是\“。

显示任何输出字符串时删除斜杠。

Apache Commons有一个用于处理转义和转义字符串的库:https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html