diff --git a/src/Statement.cc b/src/Statement.cc
index 6dbb996d062045acdcda00f851d669af01325757..4e7afa1b569ef48bfdf114450739126482b29aed 100644
--- a/src/Statement.cc
+++ b/src/Statement.cc
@@ -61,8 +61,46 @@ void
 NativeStatement::writeJsonOutput(ostream &output) const
 {
   output << R"({"statementName": "native")"
-         << R"(, "string": ")" << native_statement << R"(")"
-         << "}";
+         << R"(, "string": ")";
+
+  // A similar code is in VerbatimStatement::writeJsonOutput()
+  for (auto ch : native_statement)
+    switch (ch)
+      {
+      case '\b':
+	output << R"(\b)";
+	break;
+
+      case '\f':
+	output << R"(\f)";
+	break;
+
+      case '\n':
+	output << R"(\n)";
+	break;
+
+      case '\r':
+	output << R"(\r)";
+	break;
+
+      case '\t':
+	output << R"(\t)";
+	break;
+
+      case '"':
+	output << R"(\")";
+	break;
+
+      case '\\':
+	output << R"(\\)";
+        break;
+
+      default:
+	output << ch;
+	break;
+      }
+
+  output << R"("})";
 }
 
 VerbatimStatement::VerbatimStatement(string verbatim_statement_arg) :
@@ -80,8 +118,46 @@ void
 VerbatimStatement::writeJsonOutput(ostream &output) const
 {
   output << R"({"statementName": "verbatim")"
-         << R"(, "string": ")" << verbatim_statement << R"(")"
-         << "}";
+         << R"(, "string": ")";
+
+  // A similar code is in NativeStatement::writeJsonOutput()
+  for (auto ch : verbatim_statement)
+    switch (ch)
+      {
+      case '\b':
+	output << R"(\b)";
+	break;
+
+      case '\f':
+	output << R"(\f)";
+	break;
+
+      case '\n':
+	output << R"(\n)";
+	break;
+
+      case '\r':
+	output << R"(\r)";
+	break;
+
+      case '\t':
+	output << R"(\t)";
+	break;
+
+      case '"':
+	output << R"(\")";
+	break;
+
+      case '\\':
+	output << R"(\\)";
+        break;
+
+      default:
+	output << ch;
+	break;
+      }
+
+  output << R"("})";
 }
 
 void