aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny van Bruggen <hexagonaal@gmail.com>2018-02-22 19:23:11 +0100
committerDanny van Bruggen <hexagonaal@gmail.com>2018-02-22 19:23:11 +0100
commite297306b177eb9249f7fba34da6477d383969874 (patch)
treedce80c22526a9d4694624f8fdd63efbb5352b943
parentfbd8c73b0a66f3d71cd073c7b2cb61a1112f7ba6 (diff)
downloadjavaparser-e297306b177eb9249f7fba34da6477d383969874.tar.gz
Escape eol's for JSON output
-rw-r--r--javaparser-core/src/main/java/com/github/javaparser/printer/JsonPrinter.java2
-rw-r--r--javaparser-testing/src/test/java/com/github/javaparser/printer/JsonPrinterTest.java21
2 files changed, 22 insertions, 1 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 7357a3538..237051265 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.replace("\"", "\\\"") + "\"";
+ return "\"" + value.replace("\"", "\\\"").replace("\n", "\\n").replace("\r", "\\r") + "\"";
}
}
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 fac1ee359..7e26254a4 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
@@ -9,6 +9,12 @@ import static com.github.javaparser.JavaParser.*;
import static com.github.javaparser.utils.Utils.EOL;
import static org.junit.Assert.*;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.io.BufferedWriter;
+
public class JsonPrinterTest {
@Test
public void testWithType() {
@@ -51,4 +57,19 @@ public class JsonPrinterTest {
JsonPrinter printer = new JsonPrinter(true);
printer.output(unit);
}
+
+ @Test
+ public void issue1421() {
+ // Handle multi-line strings in JSON output
+ String code = "/* \n" +
+ "* Some comment\n" +
+ "*/\n" +
+ "public class Test {}";
+ CompilationUnit unit = parse(code);
+ JsonPrinter printer = new JsonPrinter(true);
+
+ String output = printer.output(unit);
+
+ assertEquals("{\"type\":\"CompilationUnit\",\"types\":[{\"type\":\"ClassOrInterfaceDeclaration\",\"isInterface\":\"false\",\"name\":{\"type\":\"SimpleName\",\"identifier\":\"Test\"},\"comment\":{\"type\":\"BlockComment\",\"content\":\" \\n* Some comment\\n\"}}]}", output);
+ }
} \ No newline at end of file