Skip to content

Commit 22bad46

Browse files
committed
apply JsonpCharacterEscapes if no custom escapes are already set. Reset escapes before method returns
1 parent 80f3fc0 commit 22bad46

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/main/java/com/fasterxml/jackson/databind/util/JSONPObject.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.fasterxml.jackson.core.*;
66

7+
import com.fasterxml.jackson.core.io.CharacterEscapes;
78
import com.fasterxml.jackson.databind.*;
89
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
910

@@ -66,8 +67,15 @@ public void serializeWithType(JsonGenerator jgen, SerializerProvider provider, T
6667
public void serialize(JsonGenerator jgen, SerializerProvider provider)
6768
throws IOException, JsonProcessingException
6869
{
69-
// Escape line-separator characters that break JSONP
70-
jgen.setCharacterEscapes(JsonpCharacterEscapes.instance());
70+
CharacterEscapes currentCharacterEscapes = jgen.getCharacterEscapes();
71+
72+
// NOTE: Escape line-separator characters that break JSONP only if no custom character escapes are set.
73+
// If custom escapes are in place JSONP-breaking characters will not be escaped and it is recommended to
74+
// add escaping for those (see JsonpCharacterEscapes class).
75+
if (currentCharacterEscapes == null) {
76+
jgen.setCharacterEscapes(JsonpCharacterEscapes.instance());
77+
}
78+
7179
// First, wrapping:
7280
jgen.writeRaw(_function);
7381
jgen.writeRaw('(');
@@ -80,6 +88,7 @@ public void serialize(JsonGenerator jgen, SerializerProvider provider)
8088
provider.findTypedValueSerializer(cls, true, null).serialize(_value, jgen, provider);
8189
}
8290
jgen.writeRaw(')');
91+
jgen.setCharacterEscapes(currentCharacterEscapes);
8392
}
8493

8594
/*

0 commit comments

Comments
 (0)