JSON, Jackson and multiline string

6
我有以下 JSON 数据。
{ "content" : "value" }

我将使用Jackson构建JSON字符串。
如果该值是多行文本,例如:
A
B
C

我看到的是:{ "content" : "A\r\nB\r\nC" }

它明确地为每一行设置了\r\n(CRLF)。

我想知道是否可以配置Jackson以输出此内容:

{ "content" : "A
B
C" }

这里有一个关于IT技术的翻译:A、B和C被渲染成了三行,而不是像“A\r\nB\r\nC”那样在一行中呈现。


我的问题是:Jackson不能将它们设置为换行符,而不是显式地设置\r\n作为换行符吗? - serverfaces
除非你设置自定义序列化,否则Jackson不会更改字符串内容。如果Java变量具有\r\n,那就是你得到的。如果你想进行规范化,你需要自定义序列化。 - bmargulies
3
我可以配置Jackson以输出这个内容,但那不是JSON。在JSON字符串中不能有字面换行符。 - Quentin
1
@serverfaces - "我的问题是,如果同一个字符串需要由不同的客户端解析,我是否需要记录有关在Jackson构造的JSON字符串中转义\r\n的信息?" -- 对于这个问题的答案是否定的:\r和\n是JSON标准的一部分,应该被任何JSON解析器理解。 - Jules
显示剩余2条评论
1个回答

0

如果我理解正确,您想知道为什么Jackson会忽略换行符。如果是这样,答案可以在这里找到。


抱歉问题描述不够清晰。我想要将换行符替换为其他字符,例如Unicode字符,并使用CSS技巧在浏览器中多行显示。 - Cemo
1
可以注册一个 CharacterEscapes (参见 http://fasterxml.github.io/jackson-core/javadoc/2.5/com/fasterxml/jackson/core/JsonGenerator.html#setCharacterEscapes(com.fasterxml.jackson.core.io.CharacterEscapes) ),以允许使用其他机制进行转义。 - StaxMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接