【问题标题】:Jackson: customization escaping of double quotes while serialize an object to json杰克逊:自定义转义双引号,同时将对象序列化为 json
【发布时间】:2014-12-10 14:46:46
【问题描述】:

默认情况下,jackson 通过反斜杠转义双引号:\"。 所以json对象看起来像

{"title": "Testing \"double quotes\""}

我想用两个反斜杠转义双引号:\\"。像这样

{"title": "Testing \\"double quotes\\""}

双引号如何自定义jackson序列化策略?

【问题讨论】:

  • 如果您想生成无效的 JSON,请不要使用像 Jackson 这样的 JSON 序列化程序。
  • 我稍后处理这个 json。但是在这一步中我必须做出不正确的。
  • 这是经典的XY Problem

标签: java json serialization jackson


【解决方案1】:

这将产生无效的 JSON,因此 Jackson 不会帮助您这样做。假设你在成员名称中没有反向固线,你可以在输出实际的字符串值后进行:

String invalid = mapper.writeValueAsString(object).replace("\\", "\\\\");

【讨论】:

  • 那么,有没有办法配置jackson来生成我想要的json?
  • 我认为你做不到。正如我所说,您要生成的 JSON 是无效的。字符串中的引号不会被转义,因为您已经转义了 '\',因此有效 json 中的下一个字符应该是 '}'、']' 或 ',' 但您将有 'd'。为什么还要双 '\' 呢?
  • 感谢您的回答,Aaryn。由于我使用的模板引擎,我试图制作双“\”。有一个自定义编写器在将模型呈现为模板时会转义所有 '"'。因此,'\"' 变为 '\\"' 这是不正确的。我通过自定义编写器解决了我的问题。
猜你喜欢
  • 2013-08-11
  • 2016-01-08
  • 1970-01-01
  • 2018-06-02
  • 2013-08-02
  • 2013-11-21
  • 2012-08-16
  • 1970-01-01
相关资源
最近更新 更多