2 Commits

Author SHA1 Message Date
Caijinglong
5523e26d77 add the english version 2018-08-08 14:17:00 +08:00
Caijinglong
961628180c 修改了页面的样式 2018-08-08 09:36:50 +08:00
7 changed files with 263 additions and 76 deletions

View File

@@ -1,22 +1,27 @@
# json2dart_serialization # json2dart_serialization
一个网页版本的jsondart [English readme](https://github.com/CaiJingLong/json2dart/blob/master/README_ENG.md)
一个网页版本的 json 转 dart 库
[直接使用 json2dart](https://caijinglong.github.io/json2dart/index.html)
## 说明 ## 说明
不同于https://github.com/debuggerx01/JSONFormat4Flutter 的是:这个是为了json_serializable创建的 感谢[JSONFormat4Flutter](https://github.com/debuggerx01/JSONFormat4Flutter) 给予的灵感
页面较简陋,功能完善😊 不同于这个库的是:这个是为了 json_serializable 创建的
json_serializable 可以参考flutter官网json部分 [flutter](https://flutter.io/json) json_serializable 可以参考 flutter 官网 json 部分 [flutter](https://flutter.io/json)
项目的展示地址: https://caijinglong.github.io/json2dart/ 项目使用 dart web 开发
项目使用dart web开发 主体功能已完结,有需要修改的地方欢迎留言
## 说明
主体功能完结,有需要修改的地方欢迎留言
## 开发环境
``` 其他环境不保证可以编译这份代码
```cli
dart --version dart --version
Dart VM version: 2.0.0-dev.69.5 (Tue Jul 31 15:05:14 2018 +0200) on "macos_x64" Dart VM version: 2.0.0-dev.69.5 (Tue Jul 31 15:05:14 2018 +0200) on "macos_x64"
``` ```

27
README_ENG.md Normal file
View File

@@ -0,0 +1,27 @@
# json2dart_serialization
a dart web for json2dart
use for web location: [json2dart](https://caijinglong.github.io/json2dart/index.html)
## intro
Thank you for the inspiration of this [JSONFormat4Flutter](https://github.com/debuggerx01/JSONFormat4Flutter)
This project was created for the [json_serializable](https://pub.dartlang.org/packages/json_serializable)
json_serializable also read the flutter's json page [flutter](https://flutter.io/json)
## the code compile env
```cli
dart --version
Dart VM version: 2.0.0-dev.69.5 (Tue Jul 31 15:05:14 2018 +0200) on "macos_x64"
```
## license
Created from templates made available by Stagehand under a BSD-style
[license](https://github.com/dart-lang/stagehand/blob/master/LICENSE).
the library also under BSD-style.

View File

@@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:html'; import 'dart:html';
@@ -11,20 +12,24 @@ bool isCamelCase = true;
var downloadFileName = ""; var downloadFileName = "";
const defaultValue = """{ // const defaultValue = """{
"body": "", // "body": "",
"data": [1], // "data": [1],
"input_content":["1"], // "input_content":["1"],
"list1":[{"name":"hello"}], // "list1":[{"name":"hello"}],
"number": [1.02], // "number": [1.02],
"user":{"name":"abc"} // "user":{"name":"abc"}
}"""; // }""";
const defaultValue = "";
void main() async {
isChinese = await _isChinese();
void main() {
TextAreaElement jsonInput = querySelector("#json"); TextAreaElement jsonInput = querySelector("#json");
jsonInput.value = defaultValue; jsonInput.value = defaultValue;
jsonInput.onInput.listen((event) { jsonInput.onInput.listen((event) {
// print(jsonInput.value);
refreshData(); refreshData();
}); });
@@ -104,7 +109,28 @@ void main() {
}); });
} }
void refreshData() { Future<bool> _isChinese() async {
// var lang = await findSystemLocale();
List<MetaElement> elements = querySelectorAll("meta");
String lang;
for (var e in elements) {
var _lang = e.getAttribute("lang");
if (_lang != null) {
lang = _lang;
break;
}
}
if (lang?.contains("zh") == true) {
return true;
}
return false;
}
bool isChinese = false;
void refreshData() async {
TextAreaElement jsonInput = querySelector("#json"); TextAreaElement jsonInput = querySelector("#json");
var string = jsonInput.value; var string = jsonInput.value;
String pretty; String pretty;
@@ -112,7 +138,11 @@ void refreshData() {
try { try {
pretty = formatJson(string); pretty = formatJson(string);
} on Exception { } on Exception {
result.value = "不是一个正确的json"; if (isChinese) {
result.value = "不是一个正确的json";
} else {
result.value = "Not JSON";
}
return; return;
} }
String entityClassName; String entityClassName;
@@ -126,7 +156,15 @@ void refreshData() {
var dartCode = generator.makeDartCode(); var dartCode = generator.makeDartCode();
var dartFileName = ("${generator.fileName}.dart"); var dartFileName = ("${generator.fileName}.dart");
downloadFileName = dartFileName; downloadFileName = dartFileName;
querySelector("#file_name").text = "应该使用的文件名为: $dartFileName";
String filePrefix;
if (isChinese) {
filePrefix = "应该使用的文件名为:";
} else {
filePrefix = "your dart file name is:";
}
print(filePrefix);
querySelector("#file_name").text = "$filePrefix $dartFileName";
result.value = dartCode; result.value = dartCode;
} }

View File

@@ -12,6 +12,8 @@ environment:
dependencies: dependencies:
# Your other regular dependencies here # Your other regular dependencies here
json_annotation: ^0.2.3 json_annotation: ^0.2.3
intl: ^0.15.7
dev_dependencies: dev_dependencies:
build_runner: ^0.9.0 build_runner: ^0.9.0

View File

@@ -4,45 +4,55 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta lang="en" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="scaffolded-by" content="https://github.com/google/stagehand" /> <meta name="scaffolded-by" content="https://github.com/google/stagehand" />
<title>hello_world</title> <title>json2dart_for_json_serializable</title>
<link rel="stylesheet" href="styles.css"> <link rel="stylesheet" href="styles.css">
<link rel="icon" href="favicon.ico"> <link rel="icon" href="favicon.ico">
<script defer src="main.dart.js"></script> <script defer src="main.dart.js"></script>
</head> </head>
<body> <body>
<div class="lang">
<a href="index_ch.html">中文</a>
</div>
<h1>simple use
<a href="https://pub.dartlang.org/packages/json_serializable" target="_blank">json_serializable</a>
</h1>
<div> <div>
<div id="input" class="textarea"> <div class="title">
<div class="top"> <span class="half_span">copy your json to left textarea</span>
将json粘贴至左边 <span class="half_span">
</div> <div class="result_title">
<textarea id="json" title="json字符串"></textarea> dart class name
<div> <input id="out_entity_name" />
<button id="format">格式化</button> <input type="checkbox" id="use_json_key" />
</div> <span id="check_label">jsonKey annotation</span>
<input type="checkbox" id="camelCase" />
<span id="camelCaseLabel">use camelCase</span>
</div>
<div id="file_name"></div>
</span>
</div> </div>
<div id="output" class="textarea"> <div class="content">
<div class="top"></div> <span class="half_span">
<div class="result_title"> <textarea id="json" title="json" class="content_area"></textarea>
类名称 </span>
<input id="out_entity_name" /> <span class="half_span">
<input type="checkbox" id="use_json_key" /> <textarea id="result" title="result" class="content_area"></textarea>
<span id="check_label">jsonKey annotation</span> </span>
<input type="checkbox" id="camelCase" /> </div>
<span id="camelCaseLabel">use camelCase</span> <div class="func">
</div> <span class="half_span">
<div id="file_name"></div> <button id="format">format</button>
<textarea id="result" title="结果"></textarea> </span>
<div> <span class="half_span">
<button id="copy">复制</button> <button id="copy">copy</button>
<button id="save">下载</button> <button id="save">download</button>
</div> </span>
</div> </div>
</div> </div>
</body> </body>

58
web/index_ch.html Normal file
View File

@@ -0,0 +1,58 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta lang="zh-CN" />
<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>json2dart_for_json_serializable</title>
<link rel="stylesheet" href="styles.css">
<link rel="icon" href="favicon.ico">
<script defer src="main.dart.js"></script>
</head>
<body>
<div class="lang">
<a href="index.html">English</a>
</div>
<h1>为了便利使用
<a href="https://pub.dartlang.org/packages/json_serializable">json_serializable</a></h1>
<div>
<div class="title">
<span class="half_span">将json粘贴至左边</span>
<span class="half_span">
<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>
</span>
</div>
<div class="content">
<span class="half_span">
<textarea id="json" title="json字符串" class="content_area"></textarea>
</span>
<span class="half_span">
<textarea id="result" title="结果" class="content_area"></textarea>
</span>
</div>
<div class="func">
<span class="half_span">
<button id="format">格式化</button>
</span>
<span class="half_span">
<button id="copy">复制</button>
<button id="save">下载</button>
</span>
</div>
</div>
</body>
</html>

View File

@@ -2,40 +2,87 @@
html, html,
body { body {
width: 100%; width: 100%;
height: 100%; height: 100%;
margin: 0; margin: 0;
padding: 0; padding: 0;
font-family: "Roboto", sans-serif; font-family: "Roboto", sans-serif;
} }
/*
.top { .top {
height: 4vh; height: 4vh;
text-align: center; text-align: center;
padding-top: 1vh; padding-top: 1vh;
}
.textarea {
width: 50%;
height: 90%;
text-align: center;
float: left;
}
textarea {
width: 90%;
height: 80vh;
} }
.result_title { .result_title {
padding-bottom: 15px; padding-bottom: 15px;
} }
#result { .textarea {
width: 90%; width: 50%;
height: 70vh; height: 90%;
text-align: center;
float: left;
}
.content_area {
width: 80%;
height: 90vh;
text-align: center;
float: left;
} }
.out_entity_name { .out_entity_name {
height: 40px; height: 40px;
} */
h1 {
text-align: center;
}
.half_span {
width: 50%;
float: left;
text-align: center;
}
textarea {
width: 86%;
height: 70vh;
}
.content {
padding-top: 5vh;
}
.func .half_span {
height: 7rem;
padding-top: 1rem;
}
button {
width: 6rem;
height: 2rem;
font-size: 1rem;
}
#file_name {
font-size: 0.5rem;
padding-top: 5px;
color: mediumvioletred;
}
.lang {
padding-right: 1vw;
padding-top: 1vh;
text-align: right;
}
a {
color: blue;
text-decoration: none;
}
a:hover {
text-decoration-line: underline;
} }