diff --git a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/Utilities.java b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/Utilities.java index 69c5c1ce1..22f13734e 100644 --- a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/Utilities.java +++ b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/Utilities.java @@ -1032,6 +1032,10 @@ public class Utilities { public static String escapeJson(String value) { + return escapeJson(value, true); + } + + public static String escapeJson(String value, boolean escapeUnicodeWhitespace) { if (value == null) return ""; @@ -1049,7 +1053,7 @@ public class Utilities { b.append("\\\\"); else if (c == ' ') b.append(" "); - else if (c == '\r' || c == '\n') { // was isWhitespace(c), but this escapes unicode characters, and seems unnecessary + else if ((c == '\r' || c == '\n') || (isWhitespace(c) && escapeUnicodeWhitespace)) { b.append("\\u"+Utilities.padLeft(Integer.toHexString(c), '0', 4)); } else if (((int) c) < 32) b.append("\\u" + Utilities.padLeft(Integer.toHexString(c), '0', 4)); diff --git a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/json/parser/JsonParser.java b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/json/parser/JsonParser.java index 9729cb4ce..df6efedc3 100644 --- a/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/json/parser/JsonParser.java +++ b/org.hl7.fhir.utilities/src/main/java/org/hl7/fhir/utilities/json/parser/JsonParser.java @@ -682,7 +682,7 @@ public class JsonParser { break; case STRING: b.append("\""); - b.append(Utilities.escapeJson(((JsonString) e).getValue())); + b.append(Utilities.escapeJson(((JsonString) e).getValue(), false)); b.append("\""); break; default: