package com.fasterxml.jackson.core;

import com.fasterxml.jackson.core.io.CharacterEscapes;
import com.fasterxml.jackson.core.io.SerializedString;

Convenience CharacterEscapes implementation that escapes Unicode characters `0x2028` and `0x2029` (in addition to characters escaped otherwise), which are apparently considered linefeeds as per newer Javascript specifications, and consequently problematic when using JSONP (see https://en.wikipedia.org/wiki/JSONP).
Since:2.8
/** * Convenience {@link CharacterEscapes} implementation that escapes * Unicode characters `0x2028` and `0x2029` (in addition to characters * escaped otherwise), which are apparently considered linefeeds as * per newer Javascript specifications, and consequently problematic * when using JSONP (see https://en.wikipedia.org/wiki/JSONP). * * @since 2.8 */
public class JsonpCharacterEscapes extends CharacterEscapes { private static final long serialVersionUID = 1L; private static final int[] asciiEscapes = CharacterEscapes.standardAsciiEscapesForJSON(); private static final SerializedString escapeFor2028 = new SerializedString("\\u2028"); private static final SerializedString escapeFor2029 = new SerializedString("\\u2029"); private static final JsonpCharacterEscapes sInstance = new JsonpCharacterEscapes(); public static JsonpCharacterEscapes instance() { return sInstance; } @Override public SerializableString getEscapeSequence(int ch) { switch (ch) { case 0x2028: return escapeFor2028; case 0x2029: return escapeFor2029; default: return null; } } @Override public int[] getEscapeCodesForAscii() { return asciiEscapes; } }