Java-JSON序列化-到期日期:“ 12/28”到“ 12 \ / 28”,即转义正斜杠

时间:2019-11-09 00:08:54

标签: java json serialization

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

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

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

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

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

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

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

但是序列\//的含义相同,因此使用\/毫无意义。 (一致的JSON解析器会将其读取为/。)

不是并不知道任何将数据序列化为JSON时将/输出为\/的JSON库。但是,似乎json-simple(linklink)总是以/的形式转义\/

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

另一方面,我不知道不会看到字符串时将其转义为字符串\的JSON库。 (IMO,除非将其作为将已格式化的JSON字符串片段拼接在一起的设计功能的一部分,否则这将被打破)。

答案 1 :(得分:-1)

在研究了一些选项之后,可以使用以下方法实现所需的输出。

使用的库:

compile 'com.googlecode.json-simple:json-simple:1.1.1'

代码示例:

JSONObject jsonObject = new JSONObject();
jsonObject.put("expiryDate", "12/28");
String jsonString = jsonObject.toString();

输出:

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