comparison src/luan/lib/json/JsonToString.java @ 1307:6c8ceca4a10b

json fixes
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 23 Jan 2019 13:34:18 -0700
parents 9dca1e912658
children
comparison
equal deleted inserted replaced
1306:97e7c25e9e70 1307:6c8ceca4a10b
27 }; 27 };
28 jts.toString(obj,sb,0); 28 jts.toString(obj,sb,0);
29 return sb.toString(); 29 return sb.toString();
30 } 30 }
31 31
32 public static String encodeString(String s) {
33 StringBuilder sb = new StringBuilder();
34 encodeString(s,sb);
35 return sb.toString();
36 }
37
38 private void toString(Object obj,StringBuilder sb,int indented) throws JsonException { 32 private void toString(Object obj,StringBuilder sb,int indented) throws JsonException {
39 if( obj == null || obj instanceof Boolean || obj instanceof Number ) { 33 if( obj == null || obj instanceof Boolean || obj instanceof Number ) {
40 sb.append(obj); 34 sb.append(obj);
41 return; 35 return;
42 } 36 }
55 throw new JsonException("can't handle type "+obj.getClass().getName()); 49 throw new JsonException("can't handle type "+obj.getClass().getName());
56 } 50 }
57 51
58 private static void toString(final String s,StringBuilder sb) { 52 private static void toString(final String s,StringBuilder sb) {
59 sb.append('"'); 53 sb.append('"');
60 encodeString(s,sb);
61 sb.append('"');
62 }
63
64 private static void encodeString(final String s,StringBuilder sb) {
65 for( int i=0; i<s.length(); i++ ) { 54 for( int i=0; i<s.length(); i++ ) {
66 char c = s.charAt(i); 55 char c = s.charAt(i);
67 switch(c) { 56 switch(c) {
68 case '"': 57 case '"':
69 sb.append("\\\""); 58 sb.append("\\\"");
70 break; 59 break;
71 case '\'': 60 case '\\':
61 sb.append("\\\\");
62 break;
63 case '\b':
64 sb.append("\\b");
65 break;
66 case '\f':
67 sb.append("\\f");
68 break;
69 case '\n':
70 sb.append("\\n");
71 break;
72 case '\r':
73 sb.append("\\r");
74 break;
75 case '\t':
76 sb.append("\\t");
77 break;
78 default:
79 sb.append(c);
80 }
81 }
82 sb.append('"');
83 }
84
85 public static String javascriptEncode(String s) {
86 StringBuilder sb = new StringBuilder();
87 for( int i=0; i<s.length(); i++ ) {
88 char c = s.charAt(i);
89 switch(c) {
90 case '"':
91 sb.append("\\\"");
92 break;
93 case '\'': // added for javascript
72 sb.append("\\'"); 94 sb.append("\\'");
73 break; 95 break;
74 case '\\': 96 case '\\':
75 sb.append("\\\\"); 97 sb.append("\\\\");
76 break; 98 break;
91 break; 113 break;
92 default: 114 default:
93 sb.append(c); 115 sb.append(c);
94 } 116 }
95 } 117 }
118 return sb.toString();
96 } 119 }
97 120
98 private void toString(List list,StringBuilder sb,int indented) { 121 private void toString(List list,StringBuilder sb,int indented) {
99 sb.append('['); 122 sb.append('[');
100 if( !list.isEmpty() ) { 123 if( !list.isEmpty() ) {