diff options
author | Danny van Bruggen <hexagonaal@gmail.com> | 2018-01-22 20:29:55 +0100 |
---|---|---|
committer | Danny van Bruggen <hexagonaal@gmail.com> | 2018-01-22 20:29:55 +0100 |
commit | b7345722ba3be386834af5f79d673c1ab5a5ea08 (patch) | |
tree | b0cfe895b01328277fe191732c507eb5251adddc | |
parent | 475d14ac0e063fa01b2159b14b7800b5cd9c11dc (diff) | |
download | platform_external_javaparser-b7345722ba3be386834af5f79d673c1ab5a5ea08.tar.gz platform_external_javaparser-b7345722ba3be386834af5f79d673c1ab5a5ea08.tar.bz2 platform_external_javaparser-b7345722ba3be386834af5f79d673c1ab5a5ea08.zip |
Fix JSON escaping
-rw-r--r-- | javaparser-core/src/main/java/com/github/javaparser/printer/JsonPrinter.java | 2 | ||||
-rw-r--r-- | javaparser-testing/src/test/java/com/github/javaparser/printer/JsonPrinterTest.java | 20 |
2 files changed, 17 insertions, 5 deletions
diff --git a/javaparser-core/src/main/java/com/github/javaparser/printer/JsonPrinter.java b/javaparser-core/src/main/java/com/github/javaparser/printer/JsonPrinter.java index 7d069ee65..7357a3538 100644 --- a/javaparser-core/src/main/java/com/github/javaparser/printer/JsonPrinter.java +++ b/javaparser-core/src/main/java/com/github/javaparser/printer/JsonPrinter.java @@ -69,6 +69,6 @@ public class JsonPrinter { } private static String q(String value) { - return "\"" + value + "\""; + return "\"" + value.replace("\"", "\\\"") + "\""; } } diff --git a/javaparser-testing/src/test/java/com/github/javaparser/printer/JsonPrinterTest.java b/javaparser-testing/src/test/java/com/github/javaparser/printer/JsonPrinterTest.java index 4a78e212b..fac1ee359 100644 --- a/javaparser-testing/src/test/java/com/github/javaparser/printer/JsonPrinterTest.java +++ b/javaparser-testing/src/test/java/com/github/javaparser/printer/JsonPrinterTest.java @@ -5,13 +5,15 @@ import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.expr.Expression; import org.junit.Test; +import static com.github.javaparser.JavaParser.*; +import static com.github.javaparser.utils.Utils.EOL; import static org.junit.Assert.*; public class JsonPrinterTest { @Test public void testWithType() { JsonPrinter jsonPrinter = new JsonPrinter(true); - Expression expression = JavaParser.parseExpression("x(1,1)"); + Expression expression = parseExpression("x(1,1)"); String output = jsonPrinter.output(expression); @@ -21,13 +23,23 @@ public class JsonPrinterTest { @Test public void testWithoutType() { JsonPrinter jsonPrinter = new JsonPrinter(false); - Expression expression = JavaParser.parseExpression("1+1"); + Expression expression = parseExpression("1+1"); String output = jsonPrinter.output(expression); assertEquals("{\"operator\":\"PLUS\",\"left\":{\"value\":\"1\"},\"right\":{\"value\":\"1\"}}", output); } - + + @Test + public void testEscaping() { + JsonPrinter jsonPrinter = new JsonPrinter(false); + CompilationUnit expression = parse("class X {//hi\"" + EOL + "int x;}"); + + String output = jsonPrinter.output(expression); + + assertEquals("{\"types\":[{\"isInterface\":\"false\",\"name\":{\"identifier\":\"X\",\"comment\":{\"content\":\"hi\\\"\"}},\"members\":[{\"variables\":[{\"name\":{\"identifier\":\"x\"},\"type\":{\"type\":\"INT\"}}]}]}]}", output); + } + @Test public void issue1338() { String code = "class Test {" + @@ -35,7 +47,7 @@ public class JsonPrinterTest { " String.format(\"I'm using %s\", \"JavaParser\");" + " }" + "}"; - CompilationUnit unit = JavaParser.parse(code); + CompilationUnit unit = parse(code); JsonPrinter printer = new JsonPrinter(true); printer.output(unit); } |