Skip to content

Commit 46ff62b

Browse files
committed
feat: 增加二维数组的支持,修复bug
1 parent 50f0d35 commit 46ff62b

File tree

9 files changed

+61
-50
lines changed

9 files changed

+61
-50
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
tag_name: v${{ env.version_name }}
5050
release_name: v${{ env.version_name }}
5151
body: |
52-
Release notes and changelog go here.
52+
加上对二维数组的解析,只增加了dart部分.
5353
5454
- name: Upload Release Asset
5555
id: upload-release-asset

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
}
66

77
group 'org.example'
8-
version '1.7.7-SNAPSHOT'
8+
version '1.7.8-SNAPSHOT'
99

1010

1111
repositories {
@@ -14,7 +14,7 @@ repositories {
1414

1515
dependencies {
1616
implementation 'org.apache.httpcomponents:httpclient:4.5.13'
17-
implementation "com.alibaba:fastjson:1.2.73"
17+
implementation "com.alibaba:fastjson:1.2.83"
1818
implementation "org.jetbrains.kotlin:kotlin-stdlib"
1919
}
2020

-3.82 MB
Binary file not shown.
-3.85 MB
Binary file not shown.

src/main/kotlin/com/awesome/plugins/json2bean/generators/DartJsonGenerator.kt

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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("\tList<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("\tList<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("\tList<${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("\tList<${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
}

src/main/kotlin/com/awesome/plugins/json2bean/generators/TsJsonGenerator.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,9 @@ class TsJsonGenerator(
8787
}
8888

8989
private fun getType(element: Any): String {
90-
return when (element) {
91-
(element is String) -> "string"
92-
(element is Int || element is Double || element is Float) -> "number"
93-
(element is Boolean) -> "boolean"
94-
else -> "string"
95-
}
90+
if (element is String) return "string"
91+
if (element is Int || element is Double || element is Float) return "number"
92+
if (element is Boolean) return "boolean"
93+
return "string"
9694
}
9795
}

src/main/kotlin/com/awesome/plugins/json2bean/generators/ktgenerators/KtFastJsonGenerator.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,11 @@ class KtFastJsonGenerator(
124124
}
125125

126126
private fun getType(element: Any): String {
127-
return when (element) {
128-
(element is String) -> "String"
129-
(element is Int) -> "Int"
130-
(element is Double || element is BigDecimal) -> "Double"
131-
(element is Float) -> "Float"
132-
(element is Boolean) -> "Boolean"
133-
else -> "String"
134-
}
127+
if (element is String) return "String"
128+
if (element is Int) return "Int"
129+
if (element is Double || element is BigDecimal) return "Double"
130+
if (element is Float) return "Float"
131+
if (element is Boolean) return "Boolean"
132+
return "String"
135133
}
136134
}

src/main/kotlin/com/awesome/plugins/json2bean/generators/ktgenerators/KtGsonGenerator.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,11 @@ class KtGsonGenerator(
124124
}
125125

126126
private fun getType(element: Any): String {
127-
return when (element) {
128-
(element is String) -> "String"
129-
(element is Int) -> "Int"
130-
(element is Double || element is BigDecimal) -> "Double"
131-
(element is Float) -> "Float"
132-
(element is Boolean) -> "Boolean"
133-
else -> "String"
134-
}
127+
if (element is String) return "String"
128+
if (element is Int) return "Int"
129+
if (element is Double || element is BigDecimal) return "Double"
130+
if (element is Float) return "Float"
131+
if (element is Boolean) return "Boolean"
132+
return "String"
135133
}
136134
}

src/main/kotlin/com/awesome/plugins/json2bean/generators/ktgenerators/MapKtJsonGenerator.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,11 @@ class MapKtJsonGenerator(
108108
}
109109

110110
private fun getType(element: Any): String {
111-
return when (element) {
112-
(element is String) -> "String"
113-
(element is Int) -> "Int"
114-
(element is Double || element is BigDecimal) -> "Double"
115-
(element is Float) -> "Float"
116-
(element is Boolean) -> "Boolean"
117-
else -> "String"
118-
}
111+
if (element is String) return "String"
112+
if (element is Int) return "Int"
113+
if (element is Double || element is BigDecimal) return "Double"
114+
if (element is Float) return "Float"
115+
if (element is Boolean) return "Boolean"
116+
return "String"
119117
}
120118
}

0 commit comments

Comments
 (0)