diff options
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java | 1 | ||||
-rw-r--r-- | vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java b/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java index 3f73faf289d..71eaa7f8b25 100644 --- a/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java +++ b/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java @@ -210,6 +210,7 @@ public class JsonDecoder { private static byte[] unicodeStart = {'\\', 'u'}; private long dequoteUtf16() { + next(); long codepoint = readHexValue(4); if (codepoint >= 0xd800) { if (codepoint < 0xdc00) { // high diff --git a/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java index d82cb61a08c..44aa4ab2ff7 100644 --- a/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java @@ -198,6 +198,15 @@ public class JsonFormatTestCase { } @Test + public void testDecodeUnicodeAmp() { + final String json = "{\"body\":\"some text\\u0026more text\"}"; + Slime slime = new Slime(); + new JsonDecoder().decode(slime, Utf8.toBytesStd(json)); + Cursor a = slime.get().field("body"); + assertThat(a.asString(), is("some text&more text")); + } + + @Test public void testDecodeEncodeUtf8() { final String json = "{\n" + " \"rules\": \"# Use unicode equivalents in java source:\\n" + |