我使用 Jackson 生成 JSON 对象并将它们直接写入 HTML 的标记中,如下所示:
<script>
var data = $SomeJacksonWrapper.toJson($data);
</script>
如果某些字符串包含 '</script>'
,此代码将中断在里面。转义正斜杠 (/) 可以解决问题,并且 JSON 规范允许这样做。
如何在 Jackson 中启用它?
最佳答案
根据 StaxMan 的回答,我得到了以下代码:
public class CustomCharacterEscapes extends CharacterEscapes {
private static final Logger log = Logger.getLogger(CustomCharacterEscapes.class);
private final int[] _asciiEscapes;
public CustomCharacterEscapes() {
_asciiEscapes = standardAsciiEscapesForJSON();
_asciiEscapes['/'] = CharacterEscapes.ESCAPE_STANDARD;
}
@Override
public int[] getEscapeCodesForAscii() {
return _asciiEscapes;
}
@Override
public SerializableString getEscapeSequence(int i) {
return null;
}
}
public class CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
this.getJsonFactory().setCharacterEscapes(new CustomCharacterEscapes());
}
}
关于java - 在 jackson 转义正斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6817520/