使用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());
}
}
Run Code Online (Sandbox Code Playgroud)
除了其他建议,Jackson 1.8还具有" 角色逃脱 "功能,允许重新定义逃避规则.缺少文档,但基本上你需要实现CharacterEscapes(参见http://jackson.codehaus.org/1.8.2/javadoc/org/codehaus/jackson/io/CharacterEscape),注册JsonFactory(或直接注册JsonGenerator),然后逃避将根据您想要的任何规则进行.在这种情况下,您只需更改"/"的设置即可使用ESCAPE_STANDARD.
此外,您还可以添加功能请求以添加简单的开/关功能,因为这个特定的事情听起来也可能对其他人有用.但据我所知,尚未特别要求.
小智 7
由于StaxMan这里Infeligo的答案(欢呼家伙),我找到了一种方法来提供转义/匹配(恕我直言可怕)WCF DataContractJsonSerializer日期标准格式:
/Date(1328053610008+1100)/
Run Code Online (Sandbox Code Playgroud)
这需要使用反斜杠进行转义,从而导致以下内容:
\/Date(1328053610008+1100)\/
Run Code Online (Sandbox Code Playgroud)
为了防止其他人在这里,我使用的是CustomCharacterEscapes代码:
public class CustomCharacterEscapes extends CharacterEscapes {
private final int[] _asciiEscapes;
public CustomCharacterEscapes() {
_asciiEscapes = standardAsciiEscapesForJSON();
_asciiEscapes['/'] = CharacterEscapes.ESCAPE_CUSTOM;
}
@Override
public int[] getEscapeCodesForAscii() {
return _asciiEscapes;
}
@Override
public SerializableString getEscapeSequence(int i) {
if(i == '/'){
return new SerializableString() {
@Override
public String getValue() {
return "\\/";
}
@Override
public int charLength() {
return 2;
}
@Override
public char[] asQuotedChars() {
return new char[]{'\\','/'};
}
@Override
public byte[] asUnquotedUTF8() {
return new byte[]{'\\','/'};
}
@Override
public byte[] asQuotedUTF8() {
return new byte[]{'\\','/'};
}
};
}
else{
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9018 次 |
| 最近记录: |