我正在使用Gson api将对象转换为json文档。其中一个属性是一个字符串,它是一个xml字符串。转换后,xml打印不正确,所有换行都转换为\ n,所有选项卡都转换为\ t。
代码:
Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
mashalledJson = gson.toJson(documentPropertiesWrapper);
expected Output :
<name>InterestRates_Trade_EMEA_MUREX_OfficialEOD_CentreState</name>
<snapshotDate>2015-01-01</snapshotDate>
Actual Output :
<name>InterestRates_Trade_EMEA_MUREX_OfficialEOD_CentreState</name>\r\n\t<snapshotDate>2015-01-01</snapshotDate>
答案 0 :(得分:0)
这必须使用String replaceAll()
方法来实现。在将对象转换为JSON之前,新行字符,制表符,回车符等应替换为空字符串。
Gson没有任何删除这些字符的功能。
1)全部替换
xmlString.replaceAll("\r", "").replaceAll("\n", "").replaceAll("\t", "")
2)在对象
中设置xml字符串值3)将对象转换为JSON
修改: - 强>
如果您需要换行,请使用下面不能替换新行“\ n”。
xmlString.replaceAll("\r", "").replaceAll("\t", "")
答案 1 :(得分:0)
所以我尝试了这个问题的唯一答案,但它没有用,所以我不得不找出原因。经过一些试验,结果表明需要进行一些编辑,因此我创建了以下实用程序,该实用程序对您有帮助:
private static String serialize(Object object) {
final Gson prettyGson = new GsonBuilder()
.setPrettyPrinting()
.serializeNulls()
.disableHtmlEscaping()
.create();
final String prettyGsonString = prettyGson.toJson(object);
return prettyGsonString
.replaceAll("\\\\n", "\n")
.replaceAll("\\\\t", "\t")
.replaceAll("\\\\b", "\b")
.replaceAll("\\\\r", "\r")
.replaceAll("\\\\f", "\f")
.replaceAll("\\\\'", "\'");
}