@@ -1798,9 +1798,9 @@ var CodeUtil = {
17981798 return CodeUtil . parseCode ( name , resObj , {
17991799
18001800 onParseParentStart : function ( ) {
1801- if ( isSmart ) {
1802- return depth > 0 ? '' : CodeUtil . getBlank ( depth ) + 'JSONResponse ' + name + ' = new JSONResponse(resultJson);\n' ;
1803- }
1801+ // if (isSmart) { //导致里面的 [] 等字符全都转成 List 等,里面每用一个 key 取值都得 formatArrayKey 或所有对象类型用 JSONReseponse 等,不通用
1802+ // return depth > 0 ? '' : CodeUtil.getBlank(depth) + 'JSONResponse ' + name + ' = new JSONResponse(resultJson);\n';
1803+ // }
18041804 return depth > 0 ? '' : CodeUtil . getBlank ( depth ) + 'JSONObject ' + name + ' = JSON.parseObject(resultJson);\n' ;
18051805 } ,
18061806
@@ -1850,7 +1850,8 @@ var CodeUtil = {
18501850 var innerPadding = '\n' + CodeUtil . getBlank ( depth + 1 ) ;
18511851 var innerPadding2 = '\n' + CodeUtil . getBlank ( depth + 2 ) ;
18521852
1853- var k = JSONResponse . getVariableName ( key ) + ( depth <= 0 ? '' : depth ) ;
1853+ var vn = JSONResponse . getVariableName ( key ) ;
1854+ var k = vn + ( depth <= 0 ? '' : depth ) ;
18541855 var itemName = 'item' + ( depth <= 0 ? '' : depth ) ;
18551856 //还有其它字段冲突以及for循环的i冲突,解决不完的,只能让开发者自己抽出函数 var item = StringUtil.addSuffix(k, 'Item');
18561857
@@ -1859,24 +1860,27 @@ var CodeUtil = {
18591860 var s = '\n' + padding + '{ //' + key + '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<' ;
18601861
18611862 var t = isSmart ? JSONResponse . getTableName ( key ) : null ;
1862- var isTable = JSONObject . isTableKey ( t ) ;
1863+ var isTableKey = JSONObject . isTableKey ( t ) ;
18631864 if ( isTable ) {
1864- s += innerPadding + 'List<' + t + '> ' + k + ' = ' + name + '.getList("' + key + '", ' + t + '.class);' ;
1865+ s += innerPadding + 'List<' + ( isTableKey ? t : type ) + '> ' + k + ' = ' + name + '.get' + StringUtil . firstCase ( vn , true ) + '();'
1866+ }
1867+ else if ( isTableKey ) {
1868+ s += innerPadding + 'List<' + t + '> ' + k + ' = JSON.parseArray(' + name + '.getString("' + key + '"), ' + t + '.class);' ;
18651869 }
18661870 else {
18671871 s += innerPadding + 'JSONArray ' + k + ' = ' + name + '.getJSONArray("' + key + '");' ;
18681872 }
18691873 s += innerPadding + 'if (' + k + ' == null) {' ;
1870- s += innerPadding + blank + k + ' = new ' + ( isTable ? 'ArrayList<>' : 'JSONArray' ) + '();' ;
1874+ s += innerPadding + blank + k + ' = new ' + ( isTable || isTableKey ? 'ArrayList<>' : 'JSONArray' ) + '();' ;
18711875 s += innerPadding + '}\n' ;
18721876
18731877
1874- s += innerPadding + ( isTable ? t : type ) + ' ' + itemName + ';' ;
1878+ s += innerPadding + ( isTableKey ? t : type ) + ' ' + itemName + ';' ;
18751879
18761880 var indexName = 'i' + ( depth <= 0 ? '' : depth ) ;
18771881 s += innerPadding + 'for (int ' + indexName + ' = 0; ' + indexName + ' < ' + k + '.size(); ' + indexName + ' ++) {' ;
18781882
1879- s += innerPadding2 + itemName + ' = ' + k + '.get' + ( isTable || type == 'Object' ? '' : type ) + '(' + indexName + ');' ;
1883+ s += innerPadding2 + itemName + ' = ' + k + '.get' + ( isTable || isTableKey || type == 'Object' ? '' : type ) + '(' + indexName + ');' ;
18801884 s += innerPadding2 + 'if (' + itemName + ' == null) {' ;
18811885 s += innerPadding2 + blank + 'continue;' ;
18821886 s += innerPadding2 + '}' ;
@@ -1885,7 +1889,7 @@ var CodeUtil = {
18851889
18861890 //不能生成N个,以第0个为准,可能会不全,剩下的由开发者自己补充。 for (var i = 0; i < value.length; i ++) {
18871891 if ( value [ 0 ] instanceof Object ) {
1888- s += CodeUtil . parseJavaResponse ( itemName , value [ 0 ] , depth + 2 , isTable , isSmart ) ;
1892+ s += CodeUtil . parseJavaResponse ( itemName , value [ 0 ] , depth + 2 , isTableKey , isSmart ) ;
18891893 }
18901894 // }
18911895
@@ -1904,18 +1908,21 @@ var CodeUtil = {
19041908 var s = '\n' + padding + '{ //' + key + '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<' ;
19051909
19061910 var t = isSmart ? JSONResponse . getTableName ( key ) : null ;
1907- var isTable = JSONObject . isTableKey ( t ) ;
1911+ var isTableKey = JSONObject . isTableKey ( t ) ;
19081912 if ( isTable ) {
1913+ s += innerPadding + ( isTableKey ? t : 'JSONObject' ) + ' ' + k + ' = ' + name + '.get' + StringUtil . firstCase ( k , true ) + '();'
1914+ }
1915+ else if ( isTableKey ) {
19091916 s += innerPadding + t + ' ' + k + ' = ' + name + '.getObject("' + key + '", ' + t + '.class);'
19101917 }
19111918 else {
19121919 s += innerPadding + 'JSONObject ' + k + ' = ' + name + '.getJSONObject("' + key + '");'
19131920 }
19141921 s += innerPadding + 'if (' + k + ' == null) {' ;
1915- s += innerPadding + blank + k + ' = new ' + ( isTable ? t : 'JSONObject' ) + '();' ;
1922+ s += innerPadding + blank + k + ' = new ' + ( isTableKey ? t : 'JSONObject' ) + '();' ;
19161923 s += innerPadding + '}\n' ;
19171924
1918- s += CodeUtil . parseJavaResponse ( k , value , depth + 1 , isTable , isSmart ) ;
1925+ s += CodeUtil . parseJavaResponse ( k , value , depth + 1 , isTableKey , isSmart ) ;
19191926
19201927 s += padding + '} //' + key + '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n' ;
19211928
0 commit comments