Skip to content

Commit a890ff8

Browse files
committed
🚑️ Add new template option 'unfreezed_with_default_hivece' and update README files for enhanced documentation
1 parent 3033fa2 commit a890ff8

File tree

9 files changed

+3127
-37
lines changed

9 files changed

+3127
-37
lines changed

README.md

Lines changed: 392 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,392 @@
1+
# JSON Dart - 完整的 JSON 到 Dart 代码生成解决方案
2+
3+
<p align="center">
4+
<img src="apps/jsond/assets/JSON.png" width="120" alt="JSON Dart Logo">
5+
</p>
6+
7+
<p align="center">
8+
<strong>🚀 强大、灵活、易用的 JSON 到 Dart 代码生成工具套件</strong>
9+
</p>
10+
11+
<p align="center">
12+
<a href="https://github.com/iota9star/json_dart/releases"><img src="https://img.shields.io/github/v/release/iota9star/json_dart" alt="Release"></a>
13+
<a href="https://github.com/iota9star/json_dart/blob/main/LICENSE"><img src="https://img.shields.io/github/license/iota9star/json_dart" alt="License"></a>
14+
<a href="https://github.com/iota9star/json_dart/stargazers"><img src="https://img.shields.io/github/stars/iota9star/json_dart" alt="Stars"></a>
15+
<a href="https://github.com/iota9star/json_dart/issues"><img src="https://img.shields.io/github/issues/iota9star/json_dart" alt="Issues"></a>
16+
</p>
17+
18+
## 📖 项目简介
19+
20+
JSON Dart 是一个完整的工具套件,旨在简化 Flutter 和 Dart 开发中从 JSON 数据生成 Dart 模型类的过程。无论您是在处理 REST API 响应、配置文件,还是数据库记录,JSON Dart 都能为您提供高效、灵活的解决方案。
21+
22+
### 🎯 核心优势
23+
24+
- **🎨 多样化模板**: 支持 JsonSerializable、Freezed、Hive、Isar 等主流代码生成框架
25+
- **🖥️ 跨平台支持**: 提供 Flutter GUI 应用和命令行工具
26+
- **⚡ 高性能解析**: 基于 ANTLR4 的 JSON5 解析器,支持复杂数据结构
27+
- **🛠️ 高度可定制**: 支持自定义模板和完全可配置的代码生成规则
28+
- **📱 现代化 UI**: 精美的 Material Design 3 界面,支持主题定制
29+
30+
## 🏗️ 项目架构
31+
32+
本项目采用 monorepo 架构,包含以下组件:
33+
34+
```
35+
json_dart/
36+
├── 📱 apps/
37+
│ └── jsond/ # Flutter GUI 应用
38+
├── 📦 packages/
39+
│ ├── core/ # 核心解析和生成库
40+
│ └── json/ # 命令行工具
41+
└── 🛠️ scripts/ # 构建和工具脚本
42+
```
43+
44+
### 组件说明
45+
46+
| 组件 | 描述 | 技术栈 | 用途 |
47+
|------|------|--------|------|
48+
| **JSON Dart App** | 跨平台 GUI 应用 | Flutter, Material 3 | 可视化 JSON 到 Dart 转换 |
49+
| **JSON Dart CLI** | 命令行工具 | Dart | 批量处理、CI/CD 集成 |
50+
| **JSON Dart Core** | 核心库 | Dart, ANTLR4, Mustache | 解析引擎和代码生成 |
51+
52+
## 🚀 快速开始
53+
54+
### 📋 环境要求
55+
56+
- **Flutter**: >= 3.32.6
57+
- **Dart**: >= 2.18.0
58+
- **操作系统**: Windows, macOS, Linux
59+
60+
### 🛠️ 安装方式
61+
62+
#### 方式一:使用 Flutter GUI 应用
63+
64+
```bash
65+
# 克隆项目
66+
git clone https://github.com/iota9star/json_dart.git
67+
cd json_dart
68+
69+
# 安装依赖
70+
flutter pub get
71+
72+
# 运行应用
73+
flutter run
74+
```
75+
76+
#### 方式二:安装命令行工具
77+
78+
```bash
79+
# 全局安装 CLI 工具
80+
dart pub global activate jsond_cli
81+
82+
# 使用 CLI 工具
83+
jsond -p example.json -t freezed -f
84+
```
85+
86+
#### 方式三:作为库依赖
87+
88+
```yaml
89+
# pubspec.yaml
90+
dependencies:
91+
jsond: ^0.1.0
92+
```
93+
94+
### 🎯 基本用法
95+
96+
#### GUI 应用使用
97+
1. 启动 Flutter 应用
98+
2. 在左侧 JSON 编辑器中输入 JSON 数据
99+
3. 从模板列表中选择合适的代码生成模板
100+
4. 在右侧查看生成的 Dart 代码
101+
5. 点击复制按钮获取代码
102+
103+
#### CLI 工具使用
104+
```bash
105+
# 处理单个文件
106+
jsond -p data.json -t json_serializable -f
107+
108+
# 批量处理目录
109+
jsond -d ./json_files -t freezed -f -r
110+
111+
# 使用自定义模板
112+
jsond -p data.json -e custom_template.hbs -f
113+
```
114+
115+
#### 程序库使用
116+
```dart
117+
import 'package:jsond/jsond.dart';
118+
119+
void main() {
120+
const json = '{"name": "John", "age": 30}';
121+
final dartCode = render(json, freezed, dartFormat: true);
122+
print(dartCode);
123+
}
124+
```
125+
126+
## 🎨 支持的模板
127+
128+
### 📝 基础模板
129+
- **With Final**: 生成带 `final` 修饰符的基础模型
130+
- **No Final**: 生成可变字段的基础模型
131+
132+
### 🔄 序列化模板
133+
- **JsonSerializable**: 使用 `json_annotation`
134+
- **JsonSerializable + HiveCE**: 结合 Hive 数据库注解
135+
136+
### ❄️ 不可变模板
137+
- **Freezed**: 基础 Freezed 不可变模型
138+
- **Freezed + Default**: 带默认值的 Freezed 模型
139+
- **Freezed + HiveCE**: 结合 Hive 的 Freezed 模型
140+
- **Unfreezed**: 可变的 Freezed 风格模型
141+
142+
### 🗃️ 数据库模板
143+
- **Isar**: 专为 Isar 数据库设计
144+
- **Isar + JsonSerializable**: Isar 与序列化结合
145+
- **Isar + Freezed**: Isar 与不可变模型结合
146+
147+
## 💡 功能特性
148+
149+
### 🔍 强大的解析能力
150+
- **JSON5 支持**: 完整支持 JSON5 格式(注释、尾随逗号等)
151+
- **类型推断**: 智能推断 Dart 数据类型
152+
- **嵌套结构**: 完美处理复杂嵌套对象和数组
153+
- **空值处理**: 智能识别可空字段和联合类型
154+
155+
### 🎛️ 灵活的配置
156+
- **自定义模板**: 支持 Handlebars 语法的完全自定义模板
157+
- **命名规则**: 支持多种命名约定(camelCase、PascalCase、snake_case 等)
158+
- **关键字处理**: 自动处理 Dart 关键字冲突
159+
- **代码格式化**: 集成 `dart format` 自动格式化
160+
161+
### 🖥️ 用户体验
162+
- **实时预览**: JSON 输入时实时生成 Dart 代码
163+
- **错误提示**: 详细的 JSON 语法错误信息
164+
- **主题定制**: 支持明亮/暗黑主题和自定义配色
165+
- **快捷操作**: 丰富的快捷键和工具栏操作
166+
167+
### 🔧 开发者友好
168+
- **批量处理**: CLI 工具支持批量转换多个文件
169+
- **CI/CD 集成**: 完美适配持续集成工作流
170+
- **Build Runner**: 支持 build_runner 集成
171+
- **插件系统**: 可扩展的插件架构(规划中)
172+
173+
## 📚 详细文档
174+
175+
### 语言版本
176+
- 🇨🇳 [中文文档](README.md) (当前文档)
177+
- 🇺🇸 [English Documentation](README_EN.md)
178+
179+
### 组件文档
180+
- 📱 [Flutter 应用文档](apps/jsond/README.md) | [English](apps/jsond/README_EN.md) - GUI 应用完整使用指南
181+
- 💻 [CLI 工具文档](packages/json/README.md) | [English](packages/json/README_EN.md) - 命令行工具详细说明
182+
- 🔧 [核心库文档](packages/core/README.md) | [English](packages/core/README_EN.md) - API 参考和高级用法
183+
184+
### 技术指南
185+
- 📋 [项目问题分析](PROJECT_ISSUES.md) - 代码质量分析和修复建议
186+
- 🎯 [发布日志](CHANGELOG.md) - 版本更新记录
187+
- 🔧 [开发指南](CONTRIBUTING.md) - 详细的开发和贡献指南
188+
189+
## 🎯 使用场景
190+
191+
### 🌐 API 开发
192+
```bash
193+
# 从 API 响应快速生成模型
194+
curl https://api.example.com/users | jsond -t json_serializable -f > lib/models/user.dart
195+
```
196+
197+
### 🗄️ 数据库建模
198+
```dart
199+
// 为 Hive 数据库生成类型安全的模型
200+
final code = render(schemaJson, jsonSerializableWithHiveCE, dartFormat: true);
201+
```
202+
203+
### ⚙️ 配置管理
204+
```dart
205+
// 将配置文件转换为类型安全的 Dart 类
206+
final configModel = render(configJson, freezed, dartFormat: true);
207+
```
208+
209+
### 🔄 代码生成工作流
210+
```yaml
211+
# build.yaml - 集成到 build_runner 工作流
212+
targets:
213+
$default:
214+
builders:
215+
jsond:
216+
options:
217+
template: "freezed"
218+
use_dart_format: true
219+
```
220+
221+
## 🎨 模板示例
222+
223+
### 基础模板输出
224+
```dart
225+
class User {
226+
User();
227+
228+
factory User.fromJson(Map<String, dynamic> json) {
229+
return User()
230+
..id = json['id']
231+
..name = json['name']
232+
..email = json['email'];
233+
}
234+
235+
late int id;
236+
late String name;
237+
late String email;
238+
239+
Map<String, dynamic> toJson() {
240+
return {
241+
'id': id,
242+
'name': name,
243+
'email': email,
244+
};
245+
}
246+
}
247+
```
248+
249+
### Freezed 模板输出
250+
```dart
251+
@freezed
252+
class User with _$User {
253+
const factory User({
254+
required int id,
255+
required String name,
256+
required String email,
257+
}) = _User;
258+
259+
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
260+
}
261+
```
262+
263+
## 🛣️ 发展路线图
264+
265+
### 🎯 近期目标 (v1.0)
266+
- [ ] **配置文件支持**: `jsond.yaml` 配置文件
267+
- [ ] **增量处理**: 智能检测文件变化,增量更新
268+
- [ ] **并行处理**: 多文件并行转换支持
269+
- [ ] **插件系统**: 可扩展的插件架构
270+
271+
### 🚀 中期目标 (v1.5)
272+
- [ ] **GraphQL 支持**: 从 GraphQL Schema 生成模型
273+
- [ ] **TypeScript 支持**: 生成 TypeScript 类型定义
274+
- [ ] **IDE 扩展**: VS Code 和 IntelliJ 插件
275+
- [ ] **云端服务**: 在线转换服务
276+
277+
### 🌟 长期愿景 (v2.0)
278+
- [ ] **多语言支持**: 支持更多编程语言
279+
- [ ] **AI 辅助**: 智能模板推荐和代码优化
280+
- [ ] **团队协作**: 模板共享和版本控制
281+
- [ ] **性能分析**: 代码性能分析和优化建议
282+
283+
## 📊 性能基准
284+
285+
### 解析性能
286+
| JSON 大小 | 解析时间 | 内存占用 |
287+
|-----------|----------|----------|
288+
| 1KB | < 1ms | < 1MB |
289+
| 100KB | < 50ms | < 10MB |
290+
| 1MB | < 500ms | < 50MB |
291+
292+
### 生成性能
293+
| 对象数量 | 生成时间 | 代码行数 |
294+
|----------|----------|----------|
295+
| 1-10 | < 10ms | 50-500 |
296+
| 11-100 | < 100ms | 500-5K |
297+
| 100+ | < 1s | 5K+ |
298+
299+
## 🤝 贡献指南
300+
301+
我们热烈欢迎社区贡献!无论是 bug 报告、功能请求、代码贡献还是文档改进,都非常感谢。
302+
303+
### 🛠️ 开发环境设置
304+
305+
```bash
306+
# 1. Fork 并克隆项目
307+
git clone https://github.com/YOUR_USERNAME/json_dart.git
308+
cd json_dart
309+
310+
# 2. 安装依赖
311+
flutter pub get
312+
313+
# 3. 运行测试
314+
flutter test
315+
316+
# 4. 创建功能分支
317+
git checkout -b feature/amazing-feature
318+
319+
# 5. 提交更改
320+
git commit -m "feat: add amazing feature"
321+
322+
# 6. 推送分支
323+
git push origin feature/amazing-feature
324+
325+
# 7. 创建 Pull Request
326+
```
327+
328+
### 📝 贡献类型
329+
330+
#### 🐛 Bug 报告
331+
发现 bug?请创建 [Issue](https://github.com/iota9star/json_dart/issues) 并包含:
332+
- 详细的重现步骤
333+
- 期望行为和实际行为
334+
- 环境信息(操作系统、Flutter 版本等)
335+
- 相关的错误日志
336+
337+
#### 💡 功能请求
338+
有好想法?我们很乐意听到!请在 [Discussions](https://github.com/iota9star/json_dart/discussions) 中分享您的想法。
339+
340+
#### 🔧 代码贡献
341+
- 遵循项目的代码风格
342+
- 添加适当的测试
343+
- 更新相关文档
344+
- 确保所有测试通过
345+
346+
#### 📖 文档改进
347+
- 修复文档中的错误
348+
- 添加示例和用例
349+
- 改进 API 文档
350+
- 翻译文档到其他语言
351+
352+
### 🏆 贡献者
353+
354+
感谢所有为项目做出贡献的开发者!
355+
356+
<a href="https://github.com/iota9star/json_dart/graphs/contributors">
357+
<img src="https://contrib.rocks/image?repo=iota9star/json_dart" />
358+
</a>
359+
360+
## 📄 许可证
361+
362+
本项目使用 [MIT 许可证](LICENSE)。您可以自由地使用、修改和分发本软件。
363+
364+
## 🔗 相关链接
365+
366+
### 📱 项目资源
367+
- [GitHub 仓库](https://github.com/iota9star/json_dart)
368+
- [发布页面](https://github.com/iota9star/json_dart/releases)
369+
- [问题追踪](https://github.com/iota9star/json_dart/issues)
370+
- [讨论区](https://github.com/iota9star/json_dart/discussions)
371+
372+
### 📚 技术文档
373+
- [Flutter 官方文档](https://docs.flutter.dev/)
374+
- [Dart 语言指南](https://dart.dev/guides)
375+
- [JSON5 规范](https://json5.org/)
376+
- [ANTLR4 文档](https://github.com/antlr/antlr4)
377+
378+
### 🛠️ 相关工具
379+
- [json_serializable](https://pub.dev/packages/json_serializable)
380+
- [freezed](https://pub.dev/packages/freezed)
381+
- [hive](https://pub.dev/packages/hive)
382+
- [isar](https://pub.dev/packages/isar)
383+
384+
---
385+
386+
<p align="center">
387+
<strong>🌟 如果这个项目对您有帮助,请给我们一个 Star!🌟</strong>
388+
</p>
389+
390+
<p align="center">
391+
Made with ❤️ by <a href="https://github.com/iota9star">iota9star</a> and <a href="https://github.com/iota9star/json_dart/graphs/contributors">contributors</a>
392+
</p>

0 commit comments

Comments
 (0)