diff --git a/src/main/java/com/dashjoin/jsonata/Functions.java b/src/main/java/com/dashjoin/jsonata/Functions.java index 8dc7b7a..17fb147 100644 --- a/src/main/java/com/dashjoin/jsonata/Functions.java +++ b/src/main/java/com/dashjoin/jsonata/Functions.java @@ -231,7 +231,7 @@ static void string(StringBuilder b, Object arg, boolean prettify, String indent) b.append(" "); } b.append('"'); - b.append(e.getKey()); + Utils.quote(e.getKey(), b); b.append('"'); b.append(':'); if (prettify) diff --git a/src/test/java/com/dashjoin/jsonata/StringTest.java b/src/test/java/com/dashjoin/jsonata/StringTest.java index 5171329..6e43bfa 100644 --- a/src/test/java/com/dashjoin/jsonata/StringTest.java +++ b/src/test/java/com/dashjoin/jsonata/StringTest.java @@ -140,4 +140,11 @@ public void replaceTest() { Assertions.assertEquals("http://example.org/test", jsonata("$replace($, /{par}/, '')").evaluate("http://example.org/test{par}")); } + + @Test + public void testFieldnameWithSpecialChar() { + Jsonata expr = jsonata("$ ~> |$|{}|"); + Object o = Map.of("a\nb", "c\nd"); + Assertions.assertEquals(o, expr.evaluate(o)); + } }