首页 > 解决方案 > Java - JSON 序列化 - 到期日期:“12/28”到“12\/28”即转义正斜杠

问题描述

12/28在 Java 中,我想序列化一个包含值的 JSON 字符串,例如12\/28

使用 Apache lib StringEscapeUtils 然后进行序列化,使用 jackson lib,输出为12\\/28当前输出:

{
"expiryDate": "12\\/28"
}

但是,我希望输出为“12/28” 所需的输出:

{
"expiryDate": "12\/28"
}

有什么建议么?

标签: javajsonserialization

解决方案


根据 JSON 规范(例如http://json.org上的语法图),\/是一个有效的 JSON 转义序列。

但是序列的\/含义与 相同/,因此使用 没有什么意义\/。(符合标准的 JSON 解析器会将其读取为/.)

知道在将数据序列化为 JSON 时/会输出 a 的任何 JSON 库。\/但是,似乎 json-simple ( link , link ) 总是将 a 转义/\/

  • 我不知道他们为什么决定这样做。
  • 实现此行为的代码在方法中org.json.simple.JSONValue

另一方面,我不知道有一个 JSON 库在看到一个字符串时不会转义字符串中的文字。\(这将被破坏,IMO,除非它是用于将已格式化的 JSON 字符串片段拼接在一起的设计功能的一部分。)


推荐阅读