code: public static String quoteCanonical(String s) {
          if (s == null || s.length() == 0) {
              return "\"\"";
          }
  
          int len = s.length();
          StringBuilder sb = new StringBuilder(len + 4);
  
          sb.append('"');
          for (int i = 0; i < len; i += 1) {
              char c = s.charAt(i);
              switch (c) {
              case '\\':
              case '"':
                  sb.append('\\');
                  sb.append(c);
                  break;
              default:
                  if (c < ' ') {
                      String t = "000" + Integer.toHexString(c);
                      sb.append("\\u")
                              .append(t.substring(t.length() - 4));
                  } else {
                      sb.append(c);
                  }
              }
          }
          sb.append('"');
          return sb.toString();
      }
docs: Minimal escape form.