@@ -60,7 +60,7 @@ class DartJsonGenerator(
6060 builder.append(" \t ${key.toUpperCamel()} ? ${key.toCamel()} ;\n " )
6161 construtorMethod.append(" this.${key.toCamel()} ," )
6262 toJsonMethod.append(" \t\t\t '$key ':${key.toCamel()} ?.toJson(),\n " )
63- fromJsonMethod.append(" \t\t ${key.toCamel()} = json.asBean('$key ', ${key.toUpperCamel()} .fromJson);\n " )
63+ fromJsonMethod.append(" \t\t ${key.toCamel()} = json.asBean('$key ', (v) => ${key.toUpperCamel()} .fromJson(v) );\n " )
6464 cloneMethod.append(" ${key.toCamel()} : ${key.toCamel()} ?.clone(),\n " )
6565 classes.add(parseJson(element, key.toUpperCamel(), classes))
6666 } else if (element is JSONArray ) {
@@ -72,18 +72,41 @@ class DartJsonGenerator(
7272 toJsonMethod.append(" \t\t\t '$key ':${key.toCamel()} ,\n " )
7373 fromJsonMethod.append(" \t\t ${key.toCamel()} = json.asList<${getType(result)} >('$key ');\n " )
7474 cloneMethod.append(" ${key.toCamel()} : List<${getType(result)} >.from(${key.toCamel()} ??[]),\n " )
75+ } else if (result is JSONArray ) {
76+ // 二维数组类型
77+ val item = result[0 ]
78+ if (item is String || item is Int || item is Double || item is Boolean || item is Float ) {
79+ val listType = " ${getType(item)} "
80+ builder.append(" \t List<List<${listType} >>? ${key.toCamel()} ;\n " )
81+ toJsonMethod.append(" \t\t\t '$key ':${key.toCamel()} ,\n " )
82+ fromJsonMethod.append(" \t\t ${key.toCamel()} = json.asArray2d<${listType} >('$key ');\n " )
83+ cloneMethod.append(
84+ " ${key.toCamel()} : ${key.toCamel()} ?.map((e) => List<${
85+ getType(
86+ item
87+ )
88+ } >.from(e)).toList(),\n "
89+ )
90+ } else {
91+ val listType = " ${key.toUpperCamel()} "
92+ builder.append(" \t List<List<$listType >>? ${key.toCamel()} ;\n " )
93+ toJsonMethod.append(" \t\t\t '$key ':${key.toCamel()} ?.map((v) => v.map((e) => e.toJson()).toList()).toList(),\n " )
94+ fromJsonMethod.append(" \t\t ${key.toCamel()} = json.asArray2d<${listType} >('$key ', (v) => ${key.toUpperCamel()} .fromJson(v));\n " )
95+ classes.add(parseJson(item, key.toUpperCamel(), classes))
96+ cloneMethod.append(" ${key.toCamel()} : ${key.toCamel()} ?.map((v) => v.map((e) => e.clone()).toList()).toList(),\n " )
97+ }
7598 } else {// 对象类型
7699 builder.append(" \t List<${key.toUpperCamel()} >? ${key.toCamel()} ;\n " )
77100 toJsonMethod.append(" \t\t\t '$key ':${key.toCamel()} ?.map((v)=>v.toJson()).toList(),\n " )
78- fromJsonMethod.append(" \t\t ${key.toCamel()} = json.asList<${key.toUpperCamel()} >('$key ', ${key.toUpperCamel()} .fromJson);\n " )
101+ fromJsonMethod.append(" \t\t ${key.toCamel()} = json.asList<${key.toUpperCamel()} >('$key ', (v) => ${key.toUpperCamel()} .fromJson(v) );\n " )
79102 classes.add(parseJson(result, key.toUpperCamel(), classes))
80103 cloneMethod.append(" ${key.toCamel()} : ${key.toCamel()} ?.map((v) => v.clone()).toList(),\n " )
81104 }
82105 } else {// 不明类型
83106 construtorMethod.append(" this.${key.toCamel()} ," )
84107 builder.append(" \t List<${key.toUpperCamel()} >? ${key.toCamel()} ;\n " )
85108 toJsonMethod.append(" \t\t\t '$key ':${key.toCamel()} ?.map((v)=>v.toJson()).toList(),\n " )
86- fromJsonMethod.append(" \t\t ${key.toCamel()} = json.asList<${key.toUpperCamel()} >('$key ', ${key.toUpperCamel()} .fromJson);\n " )
109+ fromJsonMethod.append(" \t\t ${key.toCamel()} = json.asList<${key.toUpperCamel()} >('$key ', (v) => ${key.toUpperCamel()} .fromJson(v) );\n " )
87110 classes.add(parseJson(JSONObject (), key.toUpperCamel(), classes))
88111 cloneMethod.append(" ${key.toCamel()} : ${key.toCamel()} ?.map((v) => v.clone()).toList(),\n " )
89112 }
@@ -199,22 +222,18 @@ class DartJsonGenerator(
199222 }
200223
201224 private fun getParseType (element : Any ): String {
202- return when (element) {
203- (element is String ) -> " asString"
204- (element is Int ) -> " asInt"
205- (element is Double || element is Float ) -> " asDouble"
206- (element is Boolean ) -> " asBool"
207- else -> " asString"
208- }
225+ if (element is String ) return " asString"
226+ if (element is Int ) return " asInt"
227+ if (element is Double || element is Float ) return " asDouble"
228+ if (element is Boolean ) return " asBool"
229+ return " String"
209230 }
210231
211232 private fun getType (element : Any ): String {
212- return when (element) {
213- (element is String ) -> " String"
214- (element is Int ) -> " int"
215- (element is Double || element is Float ) -> " double"
216- (element is Boolean ) -> " bool"
217- else -> " String"
218- }
233+ if (element is String ) return " String"
234+ if (element is Int ) return " int"
235+ if (element is Double || element is Float ) return " double"
236+ if (element is Boolean ) return " bool"
237+ return " String"
219238 }
220239}
0 commit comments