Skip to content

Commit 6f007e8

Browse files
committed
use the string replace's method the resolve the int and double problem.
replace the generate code's num to int.
1 parent 65cc06f commit 6f007e8

File tree

3 files changed

+40
-7
lines changed

3 files changed

+40
-7
lines changed

lib/generator.dart

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ class Generator {
88
String entityName;
99
Version version;
1010

11-
Generator(this.jsonString, [this.entityName, this.version = Version.v0]);
11+
Generator(this.jsonString, [this.entityName, this.version = Version.v0]) {
12+
this.jsonString = convertJsonString(jsonString);
13+
}
1214

1315
List<DefaultTemplate> templateList = [];
1416

@@ -45,12 +47,14 @@ class Generator {
4547
fieldList.forEach((filed) {
4648
if (filed is MapField) {
4749
// filed.typeString
48-
DefaultTemplate template = DefaultTemplate(srcJson: json.encode(filed.map), className: filed.typeString);
50+
DefaultTemplate template = DefaultTemplate(
51+
srcJson: json.encode(filed.map), className: filed.typeString);
4952
templateList.add(template);
5053
refreshTemplate(template);
5154
} else if (filed is ListField) {
5255
if (filed.childIsObject) {
53-
DefaultTemplate template = DefaultTemplate(srcJson: json.encode(filed.list[0]), className: filed.typeName);
56+
DefaultTemplate template = DefaultTemplate(
57+
srcJson: json.encode(filed.list[0]), className: filed.typeName);
5458
templateList.add(template);
5559
refreshTemplate(template);
5660
}
@@ -60,7 +64,8 @@ class Generator {
6064

6165
String get fileName => camelCase2UnderScoreCase(entityName);
6266

63-
static const String importString = "import 'package:json_annotation/json_annotation.dart';";
67+
static const String importString =
68+
"import 'package:json_annotation/json_annotation.dart';";
6469

6570
String get header => """$importString
6671
@@ -76,3 +81,30 @@ String camelCase2UnderScoreCase(String name) {
7681
return "_" + str.toLowerCase();
7782
});
7883
}
84+
85+
String convertJsonString(String jsonString) {
86+
var numberReg = RegExp(r"[0-9]\.[0-9]+");
87+
88+
//匹配小数数字正则
89+
var allMatch = numberReg.allMatches(jsonString).toList();
90+
91+
for (var i = 0; i < allMatch.length; i++) {
92+
//是一个小数数字
93+
var m = allMatch[i];
94+
var s = m.group(0);
95+
96+
// if (double.tryParse(s) is double) {
97+
// // 说明是真实的小数
98+
// // 这里直接匹配下一个
99+
// print("$s is double");
100+
// continue;
101+
// }
102+
103+
// print("$s is int");
104+
105+
// 应该是double,但由于js的原因被识别成了整数数,这里对这种数据进行处理,将这里的最后一位从0替换为1
106+
s = s.replaceRange(s.length - 1, s.length, "5");
107+
jsonString = jsonString.replaceRange(m.start, m.end, s);
108+
}
109+
return jsonString;
110+
}

lib/json_generator.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ void main() async {
5050
ButtonElement formatButton = querySelector("#format");
5151
formatButton.onClick.listen((click) {
5252
String pretty;
53+
pretty = convertJsonString(jsonInput.value);
5354
try {
54-
pretty = formatJson(jsonInput.value);
55+
pretty = formatJson(pretty);
5556
} on Exception {
5657
return;
5758
}

lib/template.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ class FieldHelper {
186186
} else if (v is String) {
187187
list.add(SimpleField("String", k));
188188
} else if (v is int) {
189-
list.add(SimpleField("num", k));
189+
list.add(SimpleField("int", k));
190190
} else if (v is double) {
191191
list.add(SimpleField("double", k));
192192
} else if (v is bool) {
@@ -257,7 +257,7 @@ class ListField extends Field {
257257
type = "${ListField(item, "").typeString}";
258258
} else if (item is Map<String, dynamic>) {
259259
type = "${firstLetterUpper(nameString)}";
260-
} else if (item is num) {
260+
} else if (item is int) {
261261
type = "int";
262262
} else if (item is double) {
263263
type = "double";

0 commit comments

Comments
 (0)