diff src/luan/lib/json/JsonToString.java @ 1295:9dca1e912658

improve web shell
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 10 Jan 2019 21:42:11 -0700
parents b70102bab110
children 6c8ceca4a10b
line wrap: on
line diff
--- a/src/luan/lib/json/JsonToString.java	Thu Jan 10 18:22:52 2019 -0700
+++ b/src/luan/lib/json/JsonToString.java	Thu Jan 10 21:42:11 2019 -0700
@@ -29,6 +29,12 @@
 		return sb.toString();
 	}
 
+	public static String encodeString(String s) {
+		StringBuilder sb = new StringBuilder();
+		encodeString(s,sb);
+		return sb.toString();
+	}
+
 	private void toString(Object obj,StringBuilder sb,int indented) throws JsonException {
 		if( obj == null || obj instanceof Boolean || obj instanceof Number ) {
 			sb.append(obj);
@@ -49,14 +55,22 @@
 		throw new JsonException("can't handle type "+obj.getClass().getName());
 	}
 
-	private void toString(final String s,StringBuilder sb) {
+	private static void toString(final String s,StringBuilder sb) {
+		sb.append('"');
+		encodeString(s,sb);
 		sb.append('"');
+	}
+
+	private static void encodeString(final String s,StringBuilder sb) {
 		for( int i=0; i<s.length(); i++ ) {
 			char c = s.charAt(i);
 			switch(c) {
 			case '"':
 				sb.append("\\\"");
 				break;
+			case '\'':
+				sb.append("\\'");
+				break;
 			case '\\':
 				sb.append("\\\\");
 				break;
@@ -79,7 +93,6 @@
 				sb.append(c);
 			}
 		}
-		sb.append('"');
 	}
 
 	private void toString(List list,StringBuilder sb,int indented) {