{"id":19276365,"url":"https://github.com/fluttercandies/json_dart","last_synced_at":"2025-10-24T04:26:32.001Z","repository":{"id":162060695,"uuid":"636128167","full_name":"fluttercandies/json_dart","owner":"fluttercandies","description":"A template-supported tool for converting JSON to Dart code.","archived":false,"fork":false,"pushed_at":"2025-07-10T15:24:02.000Z","size":1075,"stargazers_count":22,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-10T20:41:32.379Z","etag":null,"topics":["dart","json","json2dart"],"latest_commit_sha":null,"homepage":"https://jsond.bytex.space","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fluttercandies.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-05-04T07:25:05.000Z","updated_at":"2025-07-10T15:24:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"1ffa1281-1df3-4571-8487-c69a32278fb4","html_url":"https://github.com/fluttercandies/json_dart","commit_stats":null,"previous_names":["fluttercandies/json_dart","iota9star/json_dart"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fluttercandies/json_dart","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fjson_dart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fjson_dart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fjson_dart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fjson_dart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fluttercandies","download_url":"https://codeload.github.com/fluttercandies/json_dart/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fluttercandies%2Fjson_dart/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278542670,"owners_count":26004061,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","json","json2dart"],"created_at":"2024-11-09T20:53:31.777Z","updated_at":"2025-10-06T00:58:28.629Z","avatar_url":"https://github.com/fluttercandies.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JSON Dart - 完整的 JSON 到 Dart 代码生成解决方案\n\n\u003e 🌐 **语言版本**: [中文](README.md) | [English](README_EN.md)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"apps/jsond/assets/JSON.png\" width=\"120\" alt=\"JSON Dart Logo\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e🚀 强大、灵活、易用的 JSON 到 Dart 代码生成工具套件\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/iota9star/json_dart/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/iota9star/json_dart\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/iota9star/json_dart/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/iota9star/json_dart\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/iota9star/json_dart/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/iota9star/json_dart\" alt=\"Stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/iota9star/json_dart/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/iota9star/json_dart\" alt=\"Issues\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## 📖 项目简介\n\nJSON Dart 是一个完整的工具套件，旨在简化 Flutter 和 Dart 开发中从 JSON 数据生成 Dart 模型类的过程。无论您是在处理 REST API 响应、配置文件，还是数据库记录，JSON Dart 都能为您提供高效、灵活的解决方案。\n\n### 🎯 核心优势\n\n- **🎨 多样化模板**: 支持 JsonSerializable、Freezed、Hive、Isar 等主流代码生成框架\n- **🖥️ 跨平台支持**: 提供 Flutter GUI 应用和命令行工具\n- **⚡ 高性能解析**: 基于 ANTLR4 的 JSON5 解析器，支持复杂数据结构\n- **🛠️ 高度可定制**: 支持自定义模板和完全可配置的代码生成规则\n- **📱 现代化 UI**: 精美的 Material Design 3 界面，支持主题定制\n\n## 🏗️ 项目架构\n\n本项目采用 monorepo 架构，包含以下组件：\n\n```\njson_dart/\n├── 📱 apps/\n│   └── jsond/                 # Flutter GUI 应用 (jsond_app)\n├── 📦 packages/\n│   ├── core/                  # 核心解析和生成库 (jsond_core)\n│   └── json/                  # 命令行工具 + Build Runner (jsond)\n└── 🛠️ scripts/               # 构建和工具脚本\n```\n\n### 组件说明\n\n| 组件 | 包名 | 描述 | 技术栈 | 用途 |\n|------|------|------|--------|------|\n| **JSON Dart App** | `jsond_app` | 跨平台 GUI 应用 | Flutter, Material 3 | 可视化 JSON 到 Dart 转换 |\n| **JSON Dart CLI** | `jsond` | 命令行工具 + Build Runner | Dart, Build | 批量处理、CI/CD 集成、构建时代码生成 |\n| **JSON Dart Core** | `jsond_core` | 核心库 | Dart, ANTLR4, Mustache | 解析引擎和代码生成 |\n\n## 🚀 快速开始\n\n### 📋 环境要求\n\n- **Flutter**: \u003e= 3.32.6\n- **Dart**: \u003e= 2.18.0\n- **操作系统**: Windows, macOS, Linux\n\n### 🛠️ 安装方式\n\n#### 方式一：使用 Flutter GUI 应用\n\n```bash\n# 克隆项目\ngit clone https://github.com/iota9star/json_dart.git\ncd json_dart\n\n# 安装依赖\nflutter pub get\n\n# 运行应用\nflutter run\n```\n\n#### 方式二：安装命令行工具\n\n```bash\n# 全局安装 CLI 工具\ndart pub global activate jsond\n\n# 使用 CLI 工具\njsond -p example.json -t freezed -f\n```\n\n#### 方式三：作为库依赖\n\n```yaml\n# pubspec.yaml\ndependencies:\n  jsond_core: ^1.0.0\n\ndev_dependencies:\n  jsond: ^1.0.0\n  build_runner: ^2.3.3\n```\n\n#### 方式四：集成到 Build Runner\n\n```yaml\n# pubspec.yaml\ndev_dependencies:\n  jsond: ^1.0.0\n  build_runner: ^2.3.3\n\n# build.yaml (可选配置)\ntargets:\n  $default:\n    builders:\n      jsond:json:\n        options:\n          template: \"freezed\"\n          use_dart_format: true\n```\n\n### 🎯 基本用法\n\n#### GUI 应用使用\n1. 启动 Flutter 应用\n2. 在左侧 JSON 编辑器中输入 JSON 数据\n3. 从模板列表中选择合适的代码生成模板\n4. 在右侧查看生成的 Dart 代码\n5. 点击复制按钮获取代码\n\n#### CLI 工具使用\n```bash\n# 处理单个文件\njsond -p data.json -t json_serializable -f\n\n# 批量处理目录\njsond -d ./json_files -t freezed -f -r\n\n# 使用自定义模板\njsond -p data.json -e custom_template.hbs -f\n```\n\n#### Build Runner 使用\n```bash\n# 将 JSON 文件放在项目中（如 assets/json/）\n# 运行构建生成 Dart 代码\ndart run build_runner build\n\n# 监听模式（开发时使用）\ndart run build_runner watch\n```\n\n#### 程序库使用\n```dart\nimport 'package:jsond_core/jsond_core.dart';\n\nvoid main() {\n  const json = '{\"name\": \"John\", \"age\": 30}';\n  final dartCode = render(json, freezed, dartFormat: true);\n  print(dartCode);\n}\n```\n\n## 🎨 支持的模板\n\n### 📝 基础模板\n- **With Final**: 生成带 `final` 修饰符的基础模型\n- **No Final**: 生成可变字段的基础模型\n\n### 🔄 序列化模板\n- **JsonSerializable**: 使用 `json_annotation` 包\n- **JsonSerializable + HiveCE**: 结合 Hive 数据库注解\n\n### ❄️ 不可变模板\n- **Freezed**: 基础 Freezed 不可变模型\n- **Freezed + Default**: 带默认值的 Freezed 模型\n- **Freezed + HiveCE**: 结合 Hive 的 Freezed 模型\n- **Unfreezed**: 可变的 Freezed 风格模型\n\n### 🗃️ 数据库模板\n- **Isar**: 专为 Isar 数据库设计\n- **Isar + JsonSerializable**: Isar 与序列化结合\n- **Isar + Freezed**: Isar 与不可变模型结合\n\n## 💡 功能特性\n\n### 🔍 强大的解析能力\n- **JSON5 支持**: 完整支持 JSON5 格式（注释、尾随逗号等）\n- **类型推断**: 智能推断 Dart 数据类型\n- **嵌套结构**: 完美处理复杂嵌套对象和数组\n- **空值处理**: 智能识别可空字段和联合类型\n\n### 🎛️ 灵活的配置\n- **自定义模板**: 支持 Handlebars 语法的完全自定义模板\n- **命名规则**: 支持多种命名约定（camelCase、PascalCase、snake_case 等）\n- **关键字处理**: 自动处理 Dart 关键字冲突\n- **代码格式化**: 集成 `dart format` 自动格式化\n\n### 🖥️ 用户体验\n- **实时预览**: JSON 输入时实时生成 Dart 代码\n- **错误提示**: 详细的 JSON 语法错误信息\n- **主题定制**: 支持明亮/暗黑主题和自定义配色\n- **快捷操作**: 丰富的快捷键和工具栏操作\n\n### 🔧 开发者友好\n- **批量处理**: CLI 工具支持批量转换多个文件\n- **CI/CD 集成**: 完美适配持续集成工作流\n- **Build Runner**: 支持 build_runner 集成\n- **插件系统**: 可扩展的插件架构（规划中）\n\n## 📚 详细文档\n\n### 语言版本\n- 🇨🇳 [中文文档](README.md) (当前文档)\n- 🇺🇸 [English Documentation](README_EN.md)\n\n### 组件文档\n- 📱 [Flutter 应用文档](apps/jsond/README.md) | [English](apps/jsond/README_EN.md) - GUI 应用完整使用指南\n- 💻 [CLI 工具文档](packages/json/README.md) | [English](packages/json/README_EN.md) - 命令行工具详细说明\n- 🔧 [核心库文档](packages/core/README.md) | [English](packages/core/README_EN.md) - API 参考和高级用法\n\n### 技术指南\n- 📋 [项目问题分析](PROJECT_ISSUES.md) - 代码质量分析和修复建议\n- 🎯 [发布日志](CHANGELOG.md) - 版本更新记录\n- 🔧 [开发指南](CONTRIBUTING.md) - 详细的开发和贡献指南\n\n## 🎯 使用场景\n\n### 🌐 API 开发\n```bash\n# 从 API 响应快速生成模型\ncurl https://api.example.com/users | jsond -t json_serializable -f \u003e lib/models/user.dart\n```\n\n### 🗄️ 数据库建模\n```dart\n// 为 Hive 数据库生成类型安全的模型\nfinal code = render(schemaJson, jsonSerializableWithHiveCE, dartFormat: true);\n```\n\n### ⚙️ 配置管理\n```dart\n// 将配置文件转换为类型安全的 Dart 类\nfinal configModel = render(configJson, freezed, dartFormat: true);\n```\n\n### 🔄 代码生成工作流\n```yaml\n# build.yaml - 集成到 build_runner 工作流\ntargets:\n  $default:\n    builders:\n      jsond:json:\n        options:\n          template: \"freezed\"\n          use_dart_format: true\n          use_built_in: true\n```\n\n```bash\n# 项目结构示例\nlib/\n  models/\n    user.json          # JSON 数据文件\n    user.json.dart     # 自动生成的 Dart 代码\n\n# 构建命令\ndart run build_runner build --delete-conflicting-outputs\n```\n\n## 🎨 模板示例\n\n### 基础模板输出\n```dart\nclass User {\n  User();\n\n  factory User.fromJson(Map\u003cString, dynamic\u003e json) {\n    return User()\n      ..id = json['id']\n      ..name = json['name']\n      ..email = json['email'];\n  }\n\n  late int id;\n  late String name;\n  late String email;\n\n  Map\u003cString, dynamic\u003e toJson() {\n    return {\n      'id': id,\n      'name': name,\n      'email': email,\n    };\n  }\n}\n```\n\n### Freezed 模板输出\n```dart\n@freezed\nclass User with _$User {\n  const factory User({\n    required int id,\n    required String name,\n    required String email,\n  }) = _User;\n\n  factory User.fromJson(Map\u003cString, dynamic\u003e json) =\u003e _$UserFromJson(json);\n}\n```\n\n## 🛣️ 发展路线图\n\n### 🎯 近期目标 (v1.0)\n- [ ] **配置文件支持**: `jsond.yaml` 配置文件\n- [ ] **增量处理**: 智能检测文件变化，增量更新\n- [ ] **并行处理**: 多文件并行转换支持\n- [ ] **插件系统**: 可扩展的插件架构\n\n### 🚀 中期目标 (v1.5)\n- [ ] **GraphQL 支持**: 从 GraphQL Schema 生成模型\n- [ ] **TypeScript 支持**: 生成 TypeScript 类型定义\n- [ ] **IDE 扩展**: VS Code 和 IntelliJ 插件\n- [ ] **云端服务**: 在线转换服务\n\n### 🌟 长期愿景 (v2.0)\n- [ ] **多语言支持**: 支持更多编程语言\n- [ ] **AI 辅助**: 智能模板推荐和代码优化\n- [ ] **团队协作**: 模板共享和版本控制\n- [ ] **性能分析**: 代码性能分析和优化建议\n\n## 📊 性能基准\n\n### 解析性能\n| JSON 大小 | 解析时间 | 内存占用 |\n|-----------|----------|----------|\n| 1KB       | \u003c 1ms    | \u003c 1MB    |\n| 100KB     | \u003c 50ms   | \u003c 10MB   |\n| 1MB       | \u003c 500ms  | \u003c 50MB   |\n\n### 生成性能\n| 对象数量 | 生成时间 | 代码行数 |\n|----------|----------|----------|\n| 1-10     | \u003c 10ms   | 50-500   |\n| 11-100   | \u003c 100ms  | 500-5K   |\n| 100+     | \u003c 1s     | 5K+      |\n\n## 🤝 贡献指南\n\n我们热烈欢迎社区贡献！无论是 bug 报告、功能请求、代码贡献还是文档改进，都非常感谢。\n\n### 🛠️ 开发环境设置\n\n```bash\n# 1. Fork 并克隆项目\ngit clone https://github.com/YOUR_USERNAME/json_dart.git\ncd json_dart\n\n# 2. 安装依赖\nflutter pub get\n\n# 3. 运行测试\nflutter test\n\n# 4. 创建功能分支\ngit checkout -b feature/amazing-feature\n\n# 5. 提交更改\ngit commit -m \"feat: add amazing feature\"\n\n# 6. 推送分支\ngit push origin feature/amazing-feature\n\n# 7. 创建 Pull Request\n```\n\n### 📝 贡献类型\n\n#### 🐛 Bug 报告\n发现 bug？请创建 [Issue](https://github.com/iota9star/json_dart/issues) 并包含：\n- 详细的重现步骤\n- 期望行为和实际行为\n- 环境信息（操作系统、Flutter 版本等）\n- 相关的错误日志\n\n#### 💡 功能请求\n有好想法？我们很乐意听到！请在 [Discussions](https://github.com/iota9star/json_dart/discussions) 中分享您的想法。\n\n#### 🔧 代码贡献\n- 遵循项目的代码风格\n- 添加适当的测试\n- 更新相关文档\n- 确保所有测试通过\n\n#### 📖 文档改进\n- 修复文档中的错误\n- 添加示例和用例\n- 改进 API 文档\n- 翻译文档到其他语言\n\n### 🏆 贡献者\n\n感谢所有为项目做出贡献的开发者！\n\n\u003ca href=\"https://github.com/iota9star/json_dart/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=iota9star/json_dart\" /\u003e\n\u003c/a\u003e\n\n## 📄 许可证\n\n本项目使用 [MIT 许可证](LICENSE)。您可以自由地使用、修改和分发本软件。\n\n## 🔗 相关链接\n\n### 📱 项目资源\n- [GitHub 仓库](https://github.com/iota9star/json_dart)\n- [发布页面](https://github.com/iota9star/json_dart/releases)\n- [问题追踪](https://github.com/iota9star/json_dart/issues)\n- [讨论区](https://github.com/iota9star/json_dart/discussions)\n\n### 📚 技术文档\n- [Flutter 官方文档](https://docs.flutter.dev/)\n- [Dart 语言指南](https://dart.dev/guides)\n- [JSON5 规范](https://json5.org/)\n- [ANTLR4 文档](https://github.com/antlr/antlr4)\n\n### 🛠️ 相关工具\n- [json_serializable](https://pub.dev/packages/json_serializable)\n- [freezed](https://pub.dev/packages/freezed)\n- [hive](https://pub.dev/packages/hive)\n- [isar](https://pub.dev/packages/isar)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e🌟 如果这个项目对您有帮助，请给我们一个 Star！🌟\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Made with ❤️ by \u003ca href=\"https://github.com/iota9star\"\u003eiota9star\u003c/a\u003e and \u003ca href=\"https://github.com/iota9star/json_dart/graphs/contributors\"\u003econtributors\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluttercandies%2Fjson_dart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffluttercandies%2Fjson_dart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffluttercandies%2Fjson_dart/lists"}