我假设Jackson会在序列化过程中自动转义特殊字符,即将"/ path /"序列化为"\/path\/".看起来并非如此 - 至少开箱即用1.6:
@Test
public void testJacksonSerialize() throws Exception
{
ObjectMapper om = new ObjectMapper();
assertEquals("\\/path\\/", om.writeValueAsString("/path/"));
}
Run Code Online (Sandbox Code Playgroud)
...失败 - 产生的输出是"/ path /".我是否必须编写自己的序列化程序,或者有没有办法在杰克逊中启用特殊的字符串转义?
谢谢,-nikita
杰克逊只逃避强制性的事情。“/”不是你必须转义的东西,因此它不是。这是根据 JSON 规范。
现在:如果您绝对想要转义,您可以使用方法来写入“原始”内容或值(在这种情况下,Jackson 不会进行任何处理并在输出中转储 String)。
但你真的需要这样的逃避吗?我知道有些生成器确实会转义它(出于我未知的原因),但没有解析器期望它,所以保留斜杠不转义应该没问题。这与显然必须转义的反斜杠不同。
| 归档时间: |
|
| 查看次数: |
12959 次 |
| 最近记录: |