forked from lxm_flutter/json2dart
109 lines
2.4 KiB
Dart
109 lines
2.4 KiB
Dart
import 'dart:convert';
|
|
import 'dart:html';
|
|
|
|
import 'package:json2dart_serialization/generator.dart';
|
|
|
|
String entityName = null;
|
|
|
|
bool useJsonKey = true;
|
|
|
|
bool isCamelCase = true;
|
|
|
|
const defaultValue = """{
|
|
"body": "",
|
|
"data": [1],
|
|
"input_content":["1"],
|
|
"list1":[{"name":"hello"}],
|
|
"number": [1.02],
|
|
"user":{"name":"abc"}
|
|
}""";
|
|
|
|
void main() {
|
|
TextAreaElement jsonInput = querySelector("#json");
|
|
jsonInput.value = defaultValue;
|
|
|
|
jsonInput.onInput.listen((event) {
|
|
refreshData();
|
|
});
|
|
|
|
InputElement entityNameEle = querySelector("#out_entity_name");
|
|
entityNameEle.onInput.listen((event) {
|
|
entityName = entityNameEle.value;
|
|
refreshData();
|
|
});
|
|
|
|
ButtonElement formatButton = querySelector("#format");
|
|
formatButton.onClick.listen((click) {
|
|
String pretty;
|
|
try {
|
|
pretty = formatJson(jsonInput.value);
|
|
} on Exception {
|
|
return;
|
|
}
|
|
jsonInput.value = pretty;
|
|
});
|
|
|
|
InputElement eJsonKey = querySelector("#use_json_key");
|
|
InputElement eCamelCase = querySelector("#camelCase");
|
|
|
|
void onJsonKeyChange() {
|
|
useJsonKey = eJsonKey.checked;
|
|
eCamelCase.disabled = !useJsonKey;
|
|
isCamelCase = false;
|
|
refreshData();
|
|
}
|
|
|
|
eJsonKey.checked = useJsonKey;
|
|
eJsonKey.onInput.listen((event) {
|
|
onJsonKeyChange();
|
|
});
|
|
|
|
querySelector("#check_label").onClick.listen((event) {
|
|
eJsonKey.checked = !eJsonKey.checked;
|
|
onJsonKeyChange();
|
|
});
|
|
|
|
eCamelCase.checked = isCamelCase;
|
|
eCamelCase.onInput.listen((event) {
|
|
isCamelCase = eCamelCase.checked;
|
|
refreshData();
|
|
});
|
|
|
|
querySelector("#camelCaseLabel").onClick.listen((event) {
|
|
eCamelCase.checked = !eCamelCase.checked;
|
|
refreshData();
|
|
});
|
|
|
|
refreshData();
|
|
}
|
|
|
|
void refreshData() {
|
|
TextAreaElement jsonInput = querySelector("#json");
|
|
var string = jsonInput.value;
|
|
String pretty;
|
|
TextAreaElement result = querySelector("#result");
|
|
try {
|
|
pretty = formatJson(string);
|
|
} on Exception {
|
|
result.value = "不是一个正确的json";
|
|
return;
|
|
}
|
|
String entityClassName;
|
|
if (entityName == null || entityName == "" || entityName.trim() == "") {
|
|
entityClassName = "Entity";
|
|
} else {
|
|
entityClassName = entityName;
|
|
}
|
|
|
|
var generator = Generator(string, 'test.dart', entityClassName);
|
|
var dartCode = generator.makeDartCode();
|
|
|
|
result.value = dartCode;
|
|
}
|
|
|
|
String formatJson(String jsonString) {
|
|
var map = json.decode(jsonString);
|
|
var prettyString = JsonEncoder.withIndent(" ").convert(map);
|
|
return prettyString;
|
|
}
|