aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny van Bruggen <lol@meuk.info>2018-02-23 20:19:30 +0100
committerGitHub <noreply@github.com>2018-02-23 20:19:30 +0100
commita7fb7ad7492f5b8b7a183864a12863edfe3895fd (patch)
treeecce27a275c37a23f8f92cca7174f10e5cc425e5
parent592f7a6792f8f1f55bbdb91e49d39405ec7fadbc (diff)
parente68ea88bce78571867c78bf8a7fe57c4b9d40fae (diff)
downloadjavaparser-a7fb7ad7492f5b8b7a183864a12863edfe3895fd.tar.gz
Merge pull request #1437 from matozoid/issue_1421_escape_eol_for_json
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