This commit is contained in:
Caijinglong
2018-08-08 08:58:34 +08:00
5 changed files with 70 additions and 32 deletions

View File

@@ -2,13 +2,24 @@
一个网页版本的json转dart库
不同于https://github.com/debuggerx01/JSONFormat4Flutter的是 这个是为了json_serializable创建的
页面较简陋
## 说明
不同于https://github.com/debuggerx01/JSONFormat4Flutter 的是:这个是为了json_serializable创建的
页面较简陋,功能完善😊
json_serializable 可以参考flutter官网json部分 [flutter](https://flutter.io/json)
项目的展示地址: https://caijinglong.github.io/json2dart/
项目使用dart web开发
## 说明
主体功能完结,有需要修改的地方欢迎留言
## todo
1. 格式化代码:完成
2. 编写格式化相关的逻辑
```
dart --version
Dart VM version: 2.0.0-dev.69.5 (Tue Jul 31 15:05:14 2018 +0200) on "macos_x64"
```
## license

View File

@@ -26,7 +26,6 @@ class Generator {
void refreshTemplate(DefaultTemplate template) {
var fieldList = template.fieldList;
bool needRefresh = false;
fieldList.forEach((filed) {
if (filed is MapField) {
// filed.typeString

View File

@@ -9,6 +9,8 @@ bool useJsonKey = true;
bool isCamelCase = true;
var downloadFileName = "";
const defaultValue = """{
"body": "",
"data": [1],
@@ -45,6 +47,7 @@ void main() {
InputElement eJsonKey = querySelector("#use_json_key");
InputElement eCamelCase = querySelector("#camelCase");
TextAreaElement result = querySelector("#result");
void onJsonKeyChange() {
useJsonKey = eJsonKey.checked;
@@ -78,12 +81,27 @@ void main() {
refreshData();
querySelector("#copy").onClick.listen((event) {
TextAreaElement result = querySelector("#result");
result.focus();
result.setSelectionRange(0, result.textLength);
document.execCommand("copy", null, "");
result.blur();
});
ButtonElement saveButton = querySelector("#save");
saveButton.onClick.listen((event) async {
Blob blob = Blob([result.value]);
// FileSystem _filesystem =
// await window.requestFileSystem(1024 * 1024, persistent: false);
// FileEntry fileEntry = await _filesystem.root.createFile('dart_test.csv');
// FileWriter fw = await fileEntry.createWriter();
// fw.write(blob);
// File file = await fileEntry.file();
AnchorElement saveLink = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
saveLink.href = Url.createObjectUrlFromBlob(blob);
// saveLink.type = "download";
saveLink.download = downloadFileName;
saveLink.click();
});
}
void refreshData() {
@@ -107,6 +125,7 @@ void refreshData() {
var generator = Generator(string, entityClassName);
var dartCode = generator.makeDartCode();
var dartFileName = ("${generator.fileName}.dart");
downloadFileName = dartFileName;
querySelector("#file_name").text = "应该使用的文件名为: $dartFileName";
result.value = dartCode;

View File

@@ -9,7 +9,11 @@ environment:
#dependencies:
# path: ^1.4.1
dependencies:
# Your other regular dependencies here
json_annotation: ^0.2.3
dev_dependencies:
build_runner: ^0.9.0
build_web_compilers: ^0.4.0
json_serializable: ^0.5.4

View File

@@ -3,10 +3,10 @@
<html>
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="scaffolded-by" content="https://github.com/google/stagehand"/>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="scaffolded-by" content="https://github.com/google/stagehand" />
<title>hello_world</title>
<link rel="stylesheet" href="styles.css">
<link rel="icon" href="favicon.ico">
@@ -15,30 +15,35 @@
<body>
<div>
<div id="input" class="textarea">
<div class="top">
将json粘贴至左边
<div>
<div id="input" class="textarea">
<div class="top">
将json粘贴至左边
</div>
<textarea id="json" title="json字符串"></textarea>
<div>
<button id="format">格式化</button>
</div>
</div>
<textarea id="json" title="json字符串"></textarea>
<div>
<button id="format">格式化</button>
<div id="output" class="textarea">
<div class="top"></div>
<div class="result_title">
类名称
<input id="out_entity_name" />
<input type="checkbox" id="use_json_key" />
<span id="check_label">jsonKey annotation</span>
<input type="checkbox" id="camelCase" />
<span id="camelCaseLabel">use camelCase</span>
</div>
<div id="file_name"></div>
<textarea id="result" title="结果"></textarea>
<div>
<button id="copy">复制</button>
<button id="save">下载</button>
</div>
</div>
</div>
<div id="output" class="textarea">
<div class="top"></div>
<div class="result_title">
类名称
<input id="out_entity_name"/>
<input type="checkbox" id="use_json_key"/><span id="check_label">jsonKey annotation</span>
<input type="checkbox" id="camelCase"/><span id="camelCaseLabel">use camelCase</span>
</div>
<div id="file_name"></div>
<textarea id="result" title="结果"></textarea>
<div><button id="copy">复制</button></div>
</div>
</div>
</div>
</body>
</html>