Skip to content

Commit 295fc0a

Browse files
committed
Android:APIJSONTest工程更新APIJSONLibrary以及解决用 Android Studio 3.x 直接打包的 Debug APK 不能手动或通过 ADB 命令安装
1 parent 2428df1 commit 295fc0a

File tree

10 files changed

+345
-126
lines changed

10 files changed

+345
-126
lines changed

APIJSON-Android/APIJSONTest/APIJSONLibrary/src/main/java/zuo/biao/apijson/JSON.java

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414

1515
package zuo.biao.apijson;
1616

17-
import java.util.List;
18-
1917
import com.alibaba.fastjson.JSONArray;
2018
import com.alibaba.fastjson.JSONObject;
2119
import com.alibaba.fastjson.parser.Feature;
2220
import com.alibaba.fastjson.serializer.SerializerFeature;
2321

22+
import java.util.List;
23+
2424
/**阿里FastJSON封装类 防止解析时异常
2525
* @author Lemon
2626
*/
@@ -33,9 +33,9 @@ public class JSON {
3333
*/
3434
public static boolean isJsonCorrect(String s) {
3535
//太长 Log.i(TAG, "isJsonCorrect <<<< " + s + " >>>>>>>");
36-
if (s == null
37-
// || s.equals("[]")
38-
// || s.equals("{}")
36+
if (s == null
37+
// || s.equals("[]")
38+
// || s.equals("{}")
3939
|| s.equals("")
4040
|| s.equals("[null]")
4141
|| s.equals("{null}")
@@ -70,6 +70,20 @@ public static String getCorrectJson(String s, boolean isArray) {
7070
return s;//isJsonCorrect(s) ? s : null;
7171
}
7272

73+
/**
74+
* @param json
75+
* @return
76+
*/
77+
public static Object parse(Object obj) {
78+
int features = com.alibaba.fastjson.JSON.DEFAULT_PARSER_FEATURE;
79+
features |= Feature.OrderedField.getMask();
80+
try {
81+
return com.alibaba.fastjson.JSON.parse(obj instanceof String ? (String) obj : toJSONString(obj), features);
82+
} catch (Exception e) {
83+
Log.i(TAG, "parse catch \n" + e.getMessage());
84+
}
85+
return null;
86+
}
7387
/**obj转JSONObject
7488
* @param json
7589
* @return
@@ -139,7 +153,7 @@ public static JSONArray parseArray(List<Object> list) {
139153
return new JSONArray(list);
140154
}
141155
/**obj转JSONArray
142-
* @param json
156+
* @param obj
143157
* @return
144158
*/
145159
public static JSONArray parseArray(Object obj) {
@@ -224,13 +238,13 @@ public static String toJSONString(Object obj, SerializerFeature... features) {
224238
* @return
225239
*/
226240
public static String format(String json) {
227-
return format(parseObject(json));
241+
return format(parse(json));
228242
}
229243
/**格式化,显示更好看
230244
* @param object
231245
* @return
232246
*/
233-
public static String format(JSONObject object) {
247+
public static String format(Object object) {
234248
return toJSONString(object, SerializerFeature.PrettyFormat);
235249
}
236250

@@ -273,4 +287,12 @@ public static boolean isJSONArray(Object obj) {
273287
return false;
274288
}
275289

290+
/**判断是否为 Boolean,Number,String 中的一种
291+
* @param obj
292+
* @return
293+
*/
294+
public static boolean isBooleanOrNumberOrString(Object obj) {
295+
return obj instanceof Boolean || obj instanceof Number || obj instanceof String;
296+
}
297+
276298
}

APIJSON-Android/APIJSONTest/APIJSONLibrary/src/main/java/zuo/biao/apijson/JSONObject.java

Lines changed: 72 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package zuo.biao.apijson;
1616

17+
import java.util.ArrayList;
1718
import java.util.List;
1819
import java.util.Map;
1920

@@ -36,21 +37,21 @@ public JSONObject() {
3637
}
3738
/**transfer Object to JSONObject
3839
* @param object
39-
* @see {@link #JSONObject(Object, boolean)}
40+
* @see {@link #JSONObject(Object)}
4041
*/
4142
public JSONObject(Object object) {
4243
this(toJSONString(object));
4344
}
4445
/**parse JSONObject with JSON String
4546
* @param json
46-
* @see {@link #JSONObject(String, boolean)}
47+
* @see {@link #JSONObject(String)}
4748
*/
4849
public JSONObject(String json) {
4950
this(parseObject(json));
5051
}
5152
/**transfer com.alibaba.fastjson.JSONObject to JSONObject
5253
* @param object
53-
* @see {@link #putsAll(com.alibaba.fastjson.JSONObject)}
54+
* @see {@link #putsAll(Map<? extends String, ? extends Object>)}
5455
*/
5556
public JSONObject(com.alibaba.fastjson.JSONObject object) {
5657
this();
@@ -83,8 +84,10 @@ public static boolean isTableKey(String key) {
8384
//JSONObject内关键词 key <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
8485

8586

86-
public static final String KEY_ID = "id";
87-
public static final String KEY_ID_IN = KEY_ID + "{}";
87+
public static String KEY_ID = "id";
88+
public static String KEY_ID_IN = KEY_ID + "{}";
89+
public static String KEY_USER_ID = "userId";
90+
public static String KEY_USER_ID_IN = KEY_USER_ID + "{}";
8891

8992
/**set "id":id in Table layer
9093
* @param id
@@ -93,28 +96,57 @@ public static boolean isTableKey(String key) {
9396
public JSONObject setId(Long id) {
9497
return puts(KEY_ID, id);
9598
}
96-
/**set id{}:[] in Table layer
99+
/**set "id{}":[] in Table layer
97100
* @param list
98101
* @return
99102
*/
100103
public JSONObject setIdIn(List<Object> list) {
101104
return puts(KEY_ID_IN, list);
102105
}
106+
107+
/**set "userId":userId in Table layer
108+
* @param id
109+
* @return
110+
*/
111+
public JSONObject setUserId(Long id) {
112+
return puts(KEY_USER_ID, id);
113+
}
114+
/**set "userId{}":[] in Table layer
115+
* @param list
116+
* @return
117+
*/
118+
public JSONObject setUserIdIn(List<Object> list) {
119+
return puts(KEY_USER_ID_IN, list);
120+
}
103121

104122

105123
//@key关键字都放这个类 <<<<<<<<<<<<<<<<<<<<<<
106124
public static final String KEY_ROLE = "@role"; //角色,拥有对某些数据的某些操作的权限
107-
public static final String KEY_CONDITION = "@condition"; //条件 TODO 用 @where& @where| @where! 替代?
108125
public static final String KEY_TRY = "@try"; //尝试,忽略异常
109126
public static final String KEY_DROP = "@drop"; //丢弃,不返回
110127
public static final String KEY_CORRECT = "@correct"; //字段校正
111128

129+
public static final String KEY_DATABASE = "@database"; //数据库类型,默认为MySQL
112130
public static final String KEY_SCHEMA = "@schema"; //数据库,Table在非默认schema内时需要声明
113-
public static final String KEY_ABOUT = "@about"; //关于,返回数据库表的信息,包括表说明和字段说明
114131
public static final String KEY_COLUMN = "@column"; //查询的Table字段或SQL函数
132+
public static final String KEY_COMBINE = "@combine"; //条件组合,每个条件key前面可以放&,|,!逻辑关系 "id!{},&sex,!name&$"
115133
public static final String KEY_GROUP = "@group"; //分组方式
116134
public static final String KEY_HAVING = "@having"; //聚合函数条件,一般和@group一起用
117135
public static final String KEY_ORDER = "@order"; //排序方式
136+
137+
public static final List<String> TABLE_KEY_LIST;
138+
static {
139+
TABLE_KEY_LIST = new ArrayList<String>();
140+
TABLE_KEY_LIST.add(KEY_ROLE);
141+
TABLE_KEY_LIST.add(KEY_DATABASE);
142+
TABLE_KEY_LIST.add(KEY_SCHEMA);
143+
TABLE_KEY_LIST.add(KEY_COLUMN);
144+
TABLE_KEY_LIST.add(KEY_COMBINE);
145+
TABLE_KEY_LIST.add(KEY_GROUP);
146+
TABLE_KEY_LIST.add(KEY_HAVING);
147+
TABLE_KEY_LIST.add(KEY_ORDER);
148+
}
149+
118150
//@key关键字都放这个类 >>>>>>>>>>>>>>>>>>>>>>
119151

120152

@@ -152,6 +184,14 @@ public JSONObject setCorrect(Map<String, String> correct) {
152184

153185

154186

187+
/**set database where table was puts
188+
* @param database
189+
* @return this
190+
*/
191+
public JSONObject setDatabase(String database) {
192+
return puts(KEY_DATABASE, database);
193+
194+
}
155195
/**set schema where table was puts
156196
* @param schema
157197
* @return this
@@ -160,14 +200,6 @@ public JSONObject setSchema(String schema) {
160200
return puts(KEY_SCHEMA, schema);
161201
}
162202

163-
/**set about
164-
* @param about
165-
* @return this
166-
*/
167-
public JSONObject setAbout(boolean about) {
168-
return puts(KEY_ABOUT, about);
169-
}
170-
171203
/**set keys need to be returned
172204
* @param keys key0, key1, key2 ...
173205
* @return {@link #setColumn(String)}
@@ -183,6 +215,21 @@ public JSONObject setColumn(String keys) {
183215
return puts(KEY_COLUMN, keys);
184216
}
185217

218+
/**set combination of keys for conditions
219+
* @param keys key0,&key1,|key2,!kye3 ...
220+
* @return {@link #setColumn(String)}
221+
*/
222+
public JSONObject setCombine(String... keys) {
223+
return setCombine(StringUtil.getString(keys, true));
224+
}
225+
/**set combination of keys for conditions
226+
* @param keys key0,&key1,|key2,!kye3 ...
227+
* @return
228+
*/
229+
public JSONObject setCombine(String keys) {
230+
return puts(KEY_COMBINE, keys);
231+
}
232+
186233
/**set keys for group by
187234
* @param keys key0, key1, key2 ...
188235
* @return {@link #setGroup(String)}
@@ -303,7 +350,7 @@ public JSONObject putsSearch(String key, String value, int type) {
303350

304351

305352
/**puts key-value in object into this
306-
* @param object
353+
* @param map
307354
* @return this
308355
*/
309356
public JSONObject putsAll(Map<? extends String, ? extends Object> map) {
@@ -318,10 +365,10 @@ public void putAll(Map<? extends String, ? extends Object> map) {
318365
}
319366

320367

321-
368+
322369
/**put and return this
323370
* @param value must be annotated by {@link MethodAccess}
324-
* @return {@link #puts(String, boolean)}
371+
* @return {@link #puts(String, Object)}
325372
*/
326373
public JSONObject puts(Object value) {
327374
return puts(null, value);
@@ -336,10 +383,10 @@ public JSONObject puts(String key, Object value) {
336383
put(key, value);
337384
return this;
338385
}
339-
386+
340387
/**put and return value
341388
* @param value must be annotated by {@link MethodAccess}
342-
* @return {@link #put(String, boolean)}
389+
* @return {@link #put(String, Object)}
343390
*/
344391
public Object put(Object value) {
345392
return put(null, value);
@@ -356,10 +403,10 @@ public Object put(String key, Object value) {
356403
return null;
357404
}
358405
if (StringUtil.isEmpty(key, true)) {
359-
Class<?> clazz = value.getClass();
360-
if (clazz == null || clazz.getAnnotation(MethodAccess.class) == null) {
361-
throw new IllegalArgumentException("puts StringUtil.isNotEmpty(key, true) == false" +
362-
" && clazz == null || clazz.getAnnotation(MethodAccess.class) == null" +
406+
Class<?> clazz = value.getClass(); //should not return null
407+
if (clazz.getAnnotation(MethodAccess.class) == null) {
408+
throw new IllegalArgumentException("puts StringUtil.isEmpty(key, true)" +
409+
" clazz.getAnnotation(MethodAccess.class) == null" +
363410
" \n key为空时仅支持 类型被@MethodAccess注解 的value !!!" +
364411
" \n 如果一定要这么用,请对 " + clazz.getName() + " 注解!" +
365412
" \n 如果是类似 key[]:{} 结构的请求,建议用 putsAll(...) !");

APIJSON-Android/APIJSONTest/APIJSONLibrary/src/main/java/zuo/biao/apijson/JSONRequest.java

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
package zuo.biao.apijson;
1616

17+
import java.util.ArrayList;
18+
import java.util.List;
1719
import java.util.Map;
1820

1921
/**wrapper for request
@@ -49,9 +51,11 @@ public JSONRequest(String name, Object object) {
4951

5052

5153

52-
54+
5355
public static final String KEY_TAG = "tag";//只在最外层,最外层用JSONRequest
54-
56+
public static final String KEY_VERSION = "version";//只在最外层,最外层用JSONRequest
57+
public static final String KEY_FORMAT = "format";//只在最外层,最外层用JSONRequest
58+
5559
/**set "tag":tag in outermost layer
5660
* for write operations
5761
* @param tag
@@ -60,6 +64,22 @@ public JSONRequest(String name, Object object) {
6064
public JSONRequest setTag(String tag) {
6165
return puts(KEY_TAG, tag);
6266
}
67+
/**set "version":version in outermost layer
68+
* for target version of request
69+
* @param version
70+
* @return
71+
*/
72+
public JSONRequest setVersion(String version) {
73+
return puts(KEY_VERSION, version);
74+
}
75+
/**set "format":format in outermost layer
76+
* for format APIJSON special keys to normal keys of response
77+
* @param format
78+
* @return
79+
*/
80+
public JSONRequest setFormat(Boolean format) {
81+
return puts(KEY_FORMAT, format);
82+
}
6383

6484

6585
//array object <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
@@ -71,6 +91,15 @@ public JSONRequest setTag(String tag) {
7191
public static final String KEY_QUERY = "query";
7292
public static final String KEY_COUNT = "count";
7393
public static final String KEY_PAGE = "page";
94+
public static final String KEY_JOIN = "join";
95+
96+
public static final List<String> ARRAY_KEY_LIST;
97+
static {
98+
ARRAY_KEY_LIST = new ArrayList<String>();
99+
ARRAY_KEY_LIST.add(KEY_QUERY);
100+
ARRAY_KEY_LIST.add(KEY_COUNT);
101+
ARRAY_KEY_LIST.add(KEY_PAGE);
102+
}
74103

75104
/**set what to query in Array layer
76105
* @param query what need to query, Table,total,ALL?
@@ -103,16 +132,16 @@ public JSONRequest setPage(int page) {
103132
/**create a parent JSONObject named KEY_ARRAY
104133
* @param count
105134
* @param page
106-
* @return {@link #toArray(int, int, boolean)}
135+
* @return {@link #toArray(int, int)}
107136
*/
108137
public JSONRequest toArray(int count, int page) {
109138
return toArray(count, page, null);
110139
}
111-
/**create a parent JSONObject named name+KEY_ARRAY.
140+
/**create a parent JSONObject named name+KEY_ARRAY.
112141
* @param count
113142
* @param page
114143
* @param name
115-
* @return {name+KEY_ARRAY : this}. if needs to be put, use {@link #add(com.alibaba.fastjson.JSONObject)} instead
144+
* @return {name+KEY_ARRAY : this}. if needs to be put, use {@link #putsAll(Map<? extends String, ? extends Object>)} instead
116145
*/
117146
public JSONRequest toArray(int count, int page, String name) {
118147
return new JSONRequest(StringUtil.getString(name) + KEY_ARRAY, this.setCount(count).setPage(page));
@@ -124,7 +153,7 @@ public JSONObject putsAll(Map<? extends String, ? extends Object> map) {
124153
super.putsAll(map);
125154
return this;
126155
}
127-
156+
128157
@Override
129158
public JSONRequest puts(Object value) {
130159
return puts(null, value);

0 commit comments

Comments
 (0)