Mercurial Hosting > luan
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() ) { |
