importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.core.JsonpCharacterEscapes;importcom.fasterxml.jackson.core.SerializableString;importcom.fasterxml.jackson.core.io.CharacterEscapes;importcom.fasterxml.jackson.core.io.SerializedString;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.fasterxml.jackson.databind.SerializerProvider;importjava.io.IOException;publicclassJasonCustomSerializerextendsJsonSerializer<String>{@Overridepublicvoidserialize(String content,JsonGenerator gen,SerializerProvider serializers)throwsIOException{//自定义字符转义
gen.setCharacterEscapes(newHTMLCharacterEscapes());
gen.writeString(content);}}// First, definition of what to escapeclassHTMLCharacterEscapesextendsCharacterEscapes{privatestaticfinallong serialVersionUID =1L;privatestaticfinalint[] asciiEscapes ;privatestaticfinalSerializedString escapeFor2028 =newSerializedString("\\u2028");privatestaticfinalSerializedString escapeFor2029 =newSerializedString("\\u2029");privatestaticfinalJsonpCharacterEscapes sInstance =newJsonpCharacterEscapes();publicstaticJsonpCharacterEscapesinstance(){return sInstance;}@OverridepublicSerializableStringgetEscapeSequence(int ch){switch(ch){case0x2028:return escapeFor2028;case0x2029:return escapeFor2029;default:returnnull;}}@Overridepublicint[]getEscapeCodesForAscii(){return asciiEscapes;}static{int[] table =newint[128];// Control chars need generic escape sequencefor(int i =0; i <32;++i){// 04-Mar-2011, tatu: Used to use "-(i + 1)", replaced with constant
table[i]=CharacterEscapes.ESCAPE_STANDARD;}// Others (and some within that range too) have explicit shorter sequences
table['"']='"';// Escaping of slash is optional, so let's not add it
table[0x08]='b';
table[0x09]='t';
table[0x0C]='f';
table[0x0A]='n';
table[0x0D]='r';
asciiEscapes = table;}}