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() ) { |