From 93d3638f6c115fde46cfa3d1ab166325474b8a8e Mon Sep 17 00:00:00 2001 From: outersky Date: Mon, 3 Jun 2013 13:45:39 +0800 Subject: [PATCH] support unicode escape sequence for json like: {"name":"\u60a8\u597d"} --- .../server/text/json/ReadBasicJsonContext.java | 9 +++++++++ .../java/com/avaje/tests/text/json/TestJsonSimple.java | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/src/main/java/com/avaje/ebeaninternal/server/text/json/ReadBasicJsonContext.java b/src/main/java/com/avaje/ebeaninternal/server/text/json/ReadBasicJsonContext.java index f35864db7..6ec0890f4 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/text/json/ReadBasicJsonContext.java +++ b/src/main/java/com/avaje/ebeaninternal/server/text/json/ReadBasicJsonContext.java @@ -151,6 +151,15 @@ public class ReadBasicJsonContext implements ReadJsonInterface { case '"': sb.append('"'); break; + case 'u': + String msg = "EOF reading unicode value"; + char c1 = src.nextChar(msg); + char c2 = src.nextChar(msg); + char c3 = src.nextChar(msg); + char c4 = src.nextChar(msg); + char u = (char) Integer.parseInt(""+c1+c2+c3+c4, 16); + sb.append(u); + break; default: sb.append('\\'); diff --git a/src/test/java/com/avaje/tests/text/json/TestJsonSimple.java b/src/test/java/com/avaje/tests/text/json/TestJsonSimple.java index 9128e7ce0..d6c884750 100644 --- a/src/test/java/com/avaje/tests/text/json/TestJsonSimple.java +++ b/src/test/java/com/avaje/tests/text/json/TestJsonSimple.java @@ -67,6 +67,10 @@ public class TestJsonSimple extends BaseTestCase { JsonElement jsonElement = InternalJsonParser.parse(s); Assert.assertNotNull(jsonElement); + JsonElement e3 = InternalJsonParser.parse("{\"name\":\"\\u60a8\\u597d\"}"); + + Assert.assertTrue(e3.evalString("name").length()==2); + } }