This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git

commit 4475cccf57f6a1b98f0262bc15ebe952b5fc4ada
Author: leadpony <[email protected]>
AuthorDate: Sat Apr 20 23:35:49 2019 +0900

    Fix JsonObject#toString() to escape key names.
---
 .../main/java/org/apache/johnzon/core/JsonObjectImpl.java   |  2 +-
 .../java/org/apache/johnzon/core/JsonObjectImplTest.java    | 13 +++++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git 
a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java 
b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
index a260e25..5444fc6 100644
--- a/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
+++ b/johnzon-core/src/main/java/org/apache/johnzon/core/JsonObjectImpl.java
@@ -147,7 +147,7 @@ final class JsonObjectImpl extends AbstractMap<String, 
JsonValue> implements Jso
         while (hasNext) {
             final Map.Entry<String, JsonValue> entry = it.next();
 
-            builder.append('"').append(entry.getKey()).append("\":");
+            
builder.append('"').append(Strings.escape(entry.getKey())).append("\":");
 
             final JsonValue value = entry.getValue();
             if (JsonString.class.isInstance(value)) {
diff --git 
a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java 
b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java
index 2e418e6..e3841d0 100644
--- a/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java
+++ b/johnzon-core/src/test/java/org/apache/johnzon/core/JsonObjectImplTest.java
@@ -75,6 +75,19 @@ public class JsonObjectImplTest {
         assertEquals("{\"a\":\"b\"}", ob.build().toString());
     }
 
+    @Test
+    public void testToStringShouldReturnEscapedKey() {
+        final JsonObjectBuilder ob = Json.createObjectBuilder();
+        ob.add("foo\"bar", new JsonLongImpl(42));
+        assertEquals("{\"foo\\\"bar\":42}", ob.build().toString());
+    }
+
+    @Test
+    public void testToStringShouldReturnEscapedValue() {
+        final JsonObjectBuilder ob = Json.createObjectBuilder();
+        ob.add("a", new JsonStringImpl("foo\"bar"));
+        assertEquals("{\"a\":\"foo\\\"bar\"}", ob.build().toString());
+    }
 
     @Test(expected = NullPointerException.class)
     public void testGetBooleanMissingKeyShouldThrowNullPointerException() {

Reply via email to