Add some additional JSON string escapes.

--
MOS_MIGRATED_REVID=115921810
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
index 19af953..339592e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
@@ -781,7 +781,7 @@
         sb.append("]");
       } else if (value instanceof String) {
         sb.append("\"");
-        sb.append(escapeString((String) value));
+        sb.append(jsonEscapeString((String) value));
         sb.append("\"");
       } else if (value instanceof Integer || value instanceof Boolean) {
         sb.append(value);
@@ -794,6 +794,12 @@
         throw new EvalException(loc, errorMessage);
       }
     }
+
+    private String jsonEscapeString(String string) {
+      return escapeString(string.replace("\\", "\\\\")
+          .replace("\r", "\\r")
+          .replace("\t", "\\t"));
+    }
   };
 
   @SkylarkSignature(name = "output_group",
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index dd2bcdc..cd02b77 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -599,7 +599,10 @@
   public void testJsonEscapes() throws Exception {
     checkJson("struct(name='a\"b').to_json()", "{\"name\":\"a\\\"b\"}");
     checkJson("struct(name='a\\'b').to_json()", "{\"name\":\"a'b\"}");
+    checkJson("struct(name='a\\\\b').to_json()", "{\"name\":\"a\\\\b\"}");
     checkJson("struct(name='a\\nb').to_json()", "{\"name\":\"a\\nb\"}");
+    checkJson("struct(name='a\\rb').to_json()", "{\"name\":\"a\\rb\"}");
+    checkJson("struct(name='a\\tb').to_json()", "{\"name\":\"a\\tb\"}");
   }
 
   @Test