\ n在字符串中有效打印下一行\ n后面的文本。但是,如果使用Gson序列化相同的字符串,则\ n在下一行中打印时不再有效。我们该如何解决这个问题?示例程序如下。
在下面的程序中,由于存在\ n,地图上toString的输出是在下一行打印文本。但是,使用Gson序列化的json字符串无法显示相同的行为。在序列化字符串中,即gsonOutput变量,' \'和' n'被视为单独的字符,因此\ n下的文本未在下一行打印。我们如何在gson序列化中解决这个问题?
程序:
Map<String, String> map = new HashMap<String,String>();
map.put("x", "First_Line\nWant_This_To_Be_Printed_In_Next_Line");
final String gsonOutput = new Gson().toJson(map);
final String toStringOutput = map.toString();
System.out.println("gsonOutput:" + gsonOutput);
System.out.println("toStringOutput:" + toStringOutput);
Output:
gsonOutput:{"x":"First_Line\nWant_This_To_Be_Printed_In_Next_Line"}
toStringOutput:{x=First_Line
Want_This_To_Be_Printed_In_Next_Line}
答案 0 :(得分:1)
我猜测gsonOutput已经转义了新行,所以如果你改变了行
final String gsonOutput = new Gson().toJson(map);
to(to unescape it):
final String gsonOutput = new Gson().toJson(map).replace("\\n", "\n");
您将获得输出
gsonOutput:{"x":"First_Line
Want_This_To_Be_Printed_In_Next_Line_With_A_Tab_Before_It"}
toStringOutput:{x=First_Line
Want_This_To_Be_Printed_In_Next_Line_With_A_Tab_Before_It}
可能有更好的方法: - )