3838 * @author Lemon
3939 */
4040public abstract class AbstractParser <T , M extends Map <String , Object >, L extends List <Object >>
41- implements Parser <T , M , L >, ParserCreator <T , M , L >, VerifierCreator <T , M , L >, SQLCreator <T , M , L >, JSONParser <M , L > {
41+ implements Parser <T , M , L >, ParserCreator <T , M , L >, VerifierCreator <T , M , L >, SQLCreator <T , M , L > { // , JSONParser<M, L> {
4242 protected static final String TAG = "AbstractParser" ;
4343
4444 /**
@@ -463,7 +463,7 @@ public M parseResponse(String request) {
463463 + requestMethod + "/parseResponse request = \n " + request + "\n \n " );
464464
465465 try {
466- requestObject = parseObject (request );
466+ requestObject = ( M ) JSON . parseObject (request );
467467 if (requestObject == null ) {
468468 throw new UnsupportedEncodingException ("JSON格式不合法!" );
469469 }
@@ -577,7 +577,17 @@ public M parseResponse(M request) {
577577
578578 requestObject = error == null ? extendSuccessResult (requestObject , warn , isRoot ) : extendErrorResult (requestObject , error , requestMethod , getRequestURL (), isRoot );
579579
580- M res = (globalFormat != null && globalFormat ) && JSONResponse .isSuccess (requestObject ) ? JSONResponse .format (requestObject , this ) : requestObject ;
580+ M res = (globalFormat != null && globalFormat ) && JSONResponse .isSuccess (requestObject ) ? JSONResponse .format (requestObject , new JSONCreator <M , List <Object >>() {
581+ @ Override
582+ public M createJSONObject () {
583+ return (M ) JSON .createJSONObject ();
584+ }
585+
586+ @ Override
587+ public List <Object > createJSONArray () {
588+ return (L ) JSON .createJSONArray ();
589+ }
590+ }) : requestObject ;
581591
582592 long endTime = System .currentTimeMillis ();
583593 long duration = endTime - startTime ;
@@ -692,7 +702,7 @@ public M wrapRequest(RequestMethod method, String tag, M object, boolean isStruc
692702 String arrKey = key + "[]" ;
693703
694704 if (target .containsKey (arrKey ) == false ) {
695- target .put (arrKey , createJSONArray ());
705+ target .put (arrKey , JSON . createJSONArray ());
696706 }
697707
698708 try {
@@ -792,7 +802,7 @@ public M extendResult(M object, int code, String msg, String warn, boolean isRoo
792802 msg = index >= 0 ? msg .substring (0 , index ) : msg ;
793803
794804 if (object == null ) {
795- object = createJSONObject ();
805+ object = ( M ) JSON . createJSONObject ();
796806 }
797807
798808 if (object .get (JSONResponse .KEY_OK ) == null ) {
@@ -1386,7 +1396,7 @@ else if (childKeys.length == 1 && JSONRequest.isTableKey(childKeys[0])) { //
13861396
13871397 boolean isExtract = true ;
13881398
1389- response = createJSONArray ();
1399+ response = ( L ) JSON . createJSONArray ();
13901400 //生成size个
13911401 for (int i = 0 ; i < (isSubquery ? 1 : size ); i ++) {
13921402 parent = onObjectParse (request , isSubquery ? parentPath : path , isSubquery ? name : "" + i , config .setType (SQLConfig .TYPE_ITEM ).setPosition (i ), isSubquery , null );
@@ -2043,7 +2053,7 @@ public M executeSQL(SQLConfig<T, M, L> config, boolean isSubquery) throws Except
20432053 config .setTag (getTag ());
20442054
20452055 if (isSubquery ) {
2046- M sqlObj = createJSONObject ();
2056+ M sqlObj = ( M ) JSON . createJSONObject ();
20472057 sqlObj .put (KEY_CONFIG , config );
20482058 return sqlObj ;//容易丢失信息 JSON.parseObject(config);
20492059 }
@@ -2066,13 +2076,13 @@ public M executeSQL(SQLConfig<T, M, L> config, boolean isSubquery) throws Except
20662076 result = res ;
20672077 }
20682078 else {
2069- result = createJSONObject ();
2079+ result = ( M ) JSON . createJSONObject ();
20702080 result .put (KEY_EXPLAIN , explainResult );
20712081 result .putAll (res );
20722082 }
20732083 }
20742084 else {//如果是更新请求,不执行explain,但可以返回sql
2075- result = createJSONObject ();
2085+ result = ( M ) JSON . createJSONObject ();
20762086 result .put (KEY_SQL , config .getSQL (false ));
20772087 result .putAll (res );
20782088 }
@@ -2227,7 +2237,7 @@ protected M getRequestStructure(RequestMethod method, String tag, int version) t
22272237 }
22282238
22292239 protected M batchVerify (RequestMethod method , String tag , int version , String name , @ NotNull M request , int maxUpdateCount , SQLCreator <T , M , L > creator ) throws Exception {
2230- M correctRequest = createJSONObject ();
2240+ M correctRequest = ( M ) JSON . createJSONObject ();
22312241 List <String > removeTmpKeys = new ArrayList <>(); // 请求json里面的临时变量,不需要带入后面的业务中,比如 @post、@get等
22322242
22332243 Set <String > reqSet = request == null ? null : request .keySet ();
@@ -2427,7 +2437,7 @@ protected M batchVerify(RequestMethod method, String tag, int version, String na
24272437 String _tag = buildTag (request , key , method , tag );
24282438 M object = getRequestStructure (_method , _tag , version );
24292439 if (method == RequestMethod .CRUD && StringUtil .isEmpty (tag , true )) {
2430- M requestItem = createJSONObject ();
2440+ M requestItem = ( M ) JSON . createJSONObject ();
24312441 requestItem .put (key , obj );
24322442 Map <String , Object > ret = objectVerify (_method , _tag , version , name , requestItem , maxUpdateCount , creator , object );
24332443 correctRequest .put (key , ret .get (key ));
@@ -2490,7 +2500,17 @@ protected String buildTag(Map<String, Object> request, String key, RequestMethod
24902500 protected M objectVerify (RequestMethod method , String tag , int version , String name , @ NotNull M request
24912501 , int maxUpdateCount , SQLCreator <T , M , L > creator , M object ) throws Exception {
24922502 // 获取指定的JSON结构 >>>>>>>>>>>>>>
2493- M target = wrapRequest (method , tag , object , true , this );
2503+ M target = wrapRequest (method , tag , object , true , new JSONCreator <M , L >() {
2504+ @ Override
2505+ public M createJSONObject () {
2506+ return (M ) JSON .createJSONObject ();
2507+ }
2508+
2509+ @ Override
2510+ public L createJSONArray () {
2511+ return (L ) JSON .createJSONArray ();
2512+ }
2513+ });
24942514 // Map<String, Object> clone 浅拷贝没用,Structure.parse 会导致 structure 里面被清空,第二次从缓存里取到的就是 {}
24952515 return getVerifier ().verifyRequest (method , name , target , request , maxUpdateCount , getGlobalDatabase (), getGlobalSchema (), creator );
24962516 }
0 commit comments