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() {
