44
55package apijson ;
66
7+ import java .util .Collection ;
8+ import java .util .LinkedHashMap ;
79import java .util .List ;
810import java .util .Map ;
911
1012/**JSON工具类 防止解析时异常
1113 * @author Lemon
1214 */
1315public class JSON {
14- public static Class <?> JSON_OBJECT_CLASS = JSONObject .class ;
15- public static Class <?> JSON_ARRAY_CLASS = JSONArray .class ;
1616
1717 static final String TAG = "JSON" ;
1818
1919 public static JSONParser <? extends Map <String , Object >, ? extends List <Object >> DEFAULT_JSON_PARSER ;
2020
2121 static {
22- DEFAULT_JSON_PARSER = new JSONParser <JSONObject , JSONArray >() {
23-
24- @ Override
25- public JSONObject createJSONObject () {
26- return new JSONObject ();
27- }
28-
29- @ Override
30- public JSONArray createJSONArray () {
31- return new JSONArray ();
32- }
33-
34- @ Override
35- public String toJSONString (Object obj , boolean format ) {
36- throw new UnsupportedOperationException ();
37- }
38-
39- @ Override
40- public Object parseJSON (Object json ) {
41- throw new UnsupportedOperationException ();
42- }
43-
44- @ Override
45- public JSONObject parseObject (Object json ) {
46- throw new UnsupportedOperationException ();
47- }
48-
49- @ Override
50- public <T > T parseObject (Object json , Class <T > clazz ) {
51- throw new UnsupportedOperationException ();
52- }
53-
54- @ Override
55- public JSONArray parseArray (Object json ) {
56- throw new UnsupportedOperationException ();
57- }
58-
59- @ Override
60- public <T > List <T > parseArray (Object json , Class <T > clazz ) {
61- throw new UnsupportedOperationException ();
62- }
22+ //DEFAULT_JSON_PARSER = new JSONParser<LinkedHashMap<String, Object>, List<Object>>() {
23+ //
24+ // @Override
25+ // public LinkedHashMap<String, Object> createJSONObject() {
26+ // throw new UnsupportedOperationException();
27+ // }
28+ //
29+ // @Override
30+ // public List<Object> createJSONArray() {
31+ // throw new UnsupportedOperationException();
32+ // }
33+ //
34+ // @Override
35+ // public String toJSONString(Object obj, boolean format) {
36+ // throw new UnsupportedOperationException();
37+ // }
38+ //
39+ // @Override
40+ // public Object parse(Object json) {
41+ // throw new UnsupportedOperationException();
42+ // }
43+ //
44+ // @Override
45+ // public LinkedHashMap<String, Object> parseObject(Object json) {
46+ // throw new UnsupportedOperationException();
47+ // }
48+ //
49+ // @Override
50+ // public <T> T parseObject(Object json, Class<T> clazz) {
51+ // throw new UnsupportedOperationException();
52+ // }
53+ //
54+ // @Override
55+ // public List<Object> parseArray(Object json) {
56+ // throw new UnsupportedOperationException();
57+ // }
58+ //
59+ // @Override
60+ // public <T> List<T> parseArray(Object json, Class<T> clazz) {
61+ // throw new UnsupportedOperationException();
62+ // }
63+ //
64+ //};
6365
64- };
6566 }
6667
6768// public static JSONCreator<? extends Map<String, Object>, ? extends List<Object>> DEFAULT_JSON_CREATOR = DEFAULT_JSON_PARSER;
69+ // public static <M extends Map<String, Object>> M newObj() {
70+ // return createJSONObject();
71+ // }
72+ // public static <M extends Map<String, Object>> M newObj(String key, Object value) {
73+ // return createJSONObject(key, value);
74+ // }
75+ // public static <M extends Map<String, Object>> M newObj(Map<? extends String, ?> map) {
76+ // return createJSONObject(map);
77+ // }
6878
6979 public static <M extends Map <String , Object >> M createJSONObject () {
7080 return (M ) DEFAULT_JSON_PARSER .createJSONObject ();
@@ -76,87 +86,61 @@ public static <M extends Map<String, Object>> M createJSONObject(Map<? extends S
7686 return (M ) DEFAULT_JSON_PARSER .createJSONObject (map );
7787 }
7888
89+ //public static <L extends List<Object>> L newArr() {
90+ // return createJSONArray();
91+ //}
92+ //public static <L extends List<Object>> L newArr(Object obj) {
93+ // return createJSONArray(obj);
94+ //}
95+ //public static <L extends List<Object>> L newArr(List<?> list) {
96+ // return createJSONArray(list);
97+ //}
98+
7999 public static <L extends List <Object >> L createJSONArray () {
80100 return (L ) DEFAULT_JSON_PARSER .createJSONArray ();
81101 }
82102 public static <L extends List <Object >> L createJSONArray (Object obj ) {
83103 return (L ) DEFAULT_JSON_PARSER .createJSONArray (obj );
84104 }
85- public static <L extends List <Object >> L createJSONArray (List <?> list ) {
105+ public static <L extends List <Object >> L createJSONArray (Collection <?> list ) {
86106 return (L ) DEFAULT_JSON_PARSER .createJSONArray (list );
87107 }
88108
89- public static Object parseJSON (Object json ) {
90- if (json instanceof Boolean || json instanceof Number || json instanceof Enum <?>) {
91- return json ;
92- }
93-
94- String s = StringUtil .trim (toJSONString (json ));
95- if (s .startsWith ("{" )) {
96- return parseObject (json , DEFAULT_JSON_PARSER );
97- }
98-
99- if (s .startsWith ("[" )) {
100- return parseArray (json , DEFAULT_JSON_PARSER );
101- }
102-
103- try {
104- return DEFAULT_JSON_PARSER .parseJSON (json );
105- } catch (Throwable e ) {
106- throw new IllegalArgumentException ("JSON 格式错误!" + e .getMessage () + "! " + s );
107- }
109+ public static Object parse (Object json ) {
110+ return DEFAULT_JSON_PARSER .parse (json );
108111 }
109112
110- /**
111- * @param json
112- * @return
113- */
114- public static <M extends Map <String , Object >> M parseObject (Object json ) {
115- return (M ) parseObject (json , DEFAULT_JSON_PARSER );
116- }
117113
118- public static <M extends Map <String , Object >, L extends List < Object >> M parseObject (Object json , JSONParser < M , L > parser ) {
114+ public static <M extends Map <String , Object >> M parseObject (Object json ) {
119115 String s = toJSONString (json );
120116 if (StringUtil .isEmpty (s , true )) {
121117 return null ;
122118 }
123119
124- return parser .parseObject (s );
120+ return ( M ) DEFAULT_JSON_PARSER .parseObject (s );
125121 }
126122
127123 public static <T > T parseObject (Object json , Class <T > clazz ) {
128- return parseObject (json , clazz , DEFAULT_JSON_PARSER );
129- }
130-
131- public static <T , M extends Map <String , Object >, L extends List <Object >> T parseObject (Object json , Class <T > clazz , JSONParser <M , L > parser ) {
132124 String s = toJSONString (json );
133125 if (StringUtil .isEmpty (s , true )) {
134126 return null ;
135127 }
136128
137- if (parser == null ) {
138- parser = (JSONParser <M , L >) DEFAULT_JSON_PARSER ;
139- }
140-
141- return parser .parseObject (s , clazz );
129+ return DEFAULT_JSON_PARSER .parseObject (s , clazz );
142130 }
143131
144132 /**
145133 * @param json
146134 * @return
147135 */
148136 public static <L extends List <Object >> L parseArray (Object json ) {
149- return (L ) parseArray (json , DEFAULT_JSON_PARSER );
150- }
151-
152- public static <M extends Map <String , Object >, L extends List <Object >> L parseArray (Object json , JSONParser <M , L > parser ) {
153137 String s = toJSONString (json );
154138 if (StringUtil .isEmpty (s , true )) {
155139 return null ;
156140 }
157141
158142 try {
159- L arr = parser .parseArray (s );
143+ L arr = ( L ) DEFAULT_JSON_PARSER .parseArray (s );
160144 return arr ;
161145 } catch (Exception e ) {
162146 Log .i (TAG , "parseArray catch \n " + e .getMessage ());
@@ -165,17 +149,13 @@ public static <M extends Map<String, Object>, L extends List<Object>> L parseArr
165149 }
166150
167151 public static <T > List <T > parseArray (Object json , Class <T > clazz ) {
168- return parseArray (json , clazz , DEFAULT_JSON_PARSER );
169- }
170-
171- public static <T , M extends Map <String , Object >, L extends List <Object >> List <T > parseArray (Object json , Class <T > clazz , JSONParser <M , L > parser ) {
172152 String s = toJSONString (json );
173153 if (StringUtil .isEmpty (s , true )) {
174154 return null ;
175155 }
176156
177157 try {
178- return parser .parseArray (s , clazz );
158+ return DEFAULT_JSON_PARSER .parseArray (s , clazz );
179159 } catch (Exception e ) {
180160 Log .i (TAG , "parseArray catch \n " + e .getMessage ());
181161 }
@@ -347,14 +327,14 @@ public static <L extends List<Object>> L getJSONArray(List<Object> list, int ind
347327 * @throws IllegalArgumentException If value is not a Map and cannot be converted
348328 */
349329 @ SuppressWarnings ("unchecked" )
350- public static Map <String , Object > getMap (Map <String , Object > map , String key ) throws IllegalArgumentException {
330+ public static < K , V > Map <K , V > getMap (Map <String , Object > map , String key ) throws IllegalArgumentException {
351331 Object value = map == null || key == null ? null : map .get (key );
352332 if (value == null ) {
353333 return null ;
354334 }
355335
356336 if (value instanceof Map ) {
357- return (Map <String , Object >) value ;
337+ return (Map <K , V >) value ;
358338 }
359339
360340 throw new IllegalArgumentException ("Value for key '" + key + "' is not a Map: " + value .getClass ().getName ());
@@ -368,14 +348,14 @@ public static Map<String, Object> getMap(Map<String, Object> map, String key) th
368348 * @throws IllegalArgumentException If value is not a List and cannot be converted
369349 */
370350 @ SuppressWarnings ("unchecked" )
371- public static List <Object > getList (Map <String , Object > map , String key ) throws IllegalArgumentException {
351+ public static < T > List <T > getList (Map <String , Object > map , String key ) throws IllegalArgumentException {
372352 Object value = map == null || key == null ? null : map .get (key );
373353 if (value == null ) {
374354 return null ;
375355 }
376356
377357 if (value instanceof List ) {
378- return (List <Object >) value ;
358+ return (List <T >) value ;
379359 }
380360
381361 throw new IllegalArgumentException ("Value for key '" + key + "' is not a List: " + value .getClass ().getName ());
0 commit comments