# Json2sdb **Repository Path**: yangkl123/json2sdb ## Basic Information - **Project Name**: Json2sdb - **Description**: JSON 转 .sdb 工具(C# .NET Framework 4.8) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-21 - **Last Updated**: 2025-08-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: JSON, Sqlite ## README # 📄 JSON/Object 转 .sdb 工具(C# .NET Framework 4.8) 一个基于 C# 和 .NET Framework 4.8 的工具,可将 JSON /Object数据转换为 `.sdb` 格式的 SQLite 数据库文件。支持两种模式: - ✅ **固定结构转换**:适用于已知类结构(如 `Person`) - ✅ **任意结构转换**:自动解析并扁平化任意嵌套 JSON/Object 输出文件为标准 SQLite 数据库(`.sdb` 扩展名),可用 [DB Browser for SQLite](https://sqlitebrowser.org/) 打开查看,也可使用[在线SQLite查看](https://lzltool.cn/sqlite-viewer)。 --- ## 🚀 功能特性 | 功能 | 说明 | | ------------------ | ----------------------------------------------- | | 🔧 固定结构转换 | 支持强类型对象(如 `Person`),类型安全,性能高 | | 🌐 任意结构转换 | 自动推断 JSON 结构,支持嵌套对象、数组 | | 🗂 扁平化处理 | 将 `address.city` 转为列名 `[address_city]` | | 💾 输出 `.sdb` 文件 | 标准 SQLite 格式,兼容所有 SQLite 工具 | | 🛠 模块化设计 | 封装为独立类,易于扩展和复用 | | 🖥 控制台菜单 | 支持交互式选择转换模式 | --- ## 📦 项目结构 ``` JsonToSdb/ │ ├── FixedJsonToSdbConverter.cs # 固定结构转换器 ├── DynamicJsonToSdbConverter.cs # 任意结构转换器 ├── Person.cs # 示例数据模型 ├── Program.cs # 主程序(菜单式交互) ├── App.config # 配置文件(SQLite 支持) └── README.md # 本说明文档 ``` --- ## ⚙️ 技术栈 - **语言**:C# - **框架**:.NET Framework 4.8 - **JSON 解析**:[Newtonsoft.Json](https://www.newtonsoft.com/json) - **SQLite 支持**:[System.Data.SQLite](https://system.data.sqlite.org/) - **数据库格式**:`.sdb`(SQLite 数据库,扩展名自定义) --- ## 📥 依赖安装(NuGet) 在 Visual Studio 的 **NuGet 包管理器控制台**中运行以下命令: ```bash Install-Package Newtonsoft.Json Install-Package System.Data.SQLite ``` > ✅ 确保目标框架为 `.NET Framework 4.8` --- ## ▶️ 如何使用 ### 1. 编译项目 使用 Visual Studio 打开项目,编译生成可执行文件。 ### 2. 运行程序 启动后会显示菜单: ``` === JSON 转 .sdb 工具 === 1. 固定结构转换(如 Person) 2. 任意结构转换(自动推断) 3. 退出 请选择功能 (1-3): ``` ### 3. 选择功能 - **输入 `1`**:使用 `Person` 类结构转换,生成 `fixed_output.sdb` - **输入 `2`**:自动解析任意 JSON/Object,生成 `dynamic_output.sdb` - **输入 `3`**:退出程序 ### 4. 查看结果 生成的 `.sdb` 文件位于程序输出目录(如 `bin\Debug\`): - `fixed_output.sdb` → 包含 `People` 表 - `dynamic_output.sdb` → 包含 `Data` 表(自动建表) 💡 你也可以选择从 JSON 文件导入数据。程序会自动读取文件并转换为 `.sdb` 数据库。 使用 [DB Browser for SQLite](https://sqlitebrowser.org/) 打开查看数据,也可使用[在线SQLite查看](https://lzltool.cn/sqlite-viewer) --- ## 🛠 示例 JSON(固定结构) ```json [ { "Id": 1, "Name": "张三", "Age": 25, "City": "北京" }, { "Id": 2, "Name": "李四", "Age": 30, "City": "上海" } ] ``` → 生成表:`People` | Id | Name | Age | City | | ---- | ---- | ---- | ---- | | 1 | 张三 | 25 | 北京 | | 2 | 李四 | 30 | 上海 | --- ## 🌈 示例 JSON(任意结构) ```json [ { "id": 1, "name": "Alice", "age": 30, "address": { "city": "Beijing" }, "tags": ["dev", "sql"], "active": true }, { "id": 2, "name": "Bob", "age": 25, "address": { "city": "Shanghai" }, "score": 95.5 } ] ``` → 生成表:`Data` | [id] | [name] | [age] | [address_city] | [tags] | [active] | [score] | | ---- | ------ | ----- | -------------- | --------------- | -------- | ------- | | 1 | Alice | 30 | Beijing | ["dev","sql"] | True | | | 2 | Bob | 25 | Shanghai | ["design","ui"] | False | 95.5 | > ⚠️ 数组和嵌套对象以 JSON 字符串形式存储 --- ## 🔐 安全与性能 - ✅ 使用 **参数化查询** 防止 SQL 注入 - ✅ 使用 **事务(Transaction)** 提高插入性能 - ✅ 列名使用 `[...]` 转义,防止特殊字符出错 - ✅ 自动删除旧 `.sdb` 文件,避免冲突 --- ## 🧩 扩展建议 你可以基于此项目继续扩展: - 🔹 从 JSON 文件读取数据(`File.ReadAllText("data.json")`) - 🔹 支持 CSV 或 Excel 导出 - 🔹 添加类型推断(自动识别 INTEGER/REAL) - 🔹 构建 WinForms 图形界面 - 🔹 添加日志记录功能 - 🔹 支持将数组拆分为子表(一对多关系) --- ## 📎 许可证 MIT License - 可自由使用、修改和分发。 --- ## 📬 反馈与支持 如有问题或建议,欢迎提交 Issue 或联系作者。 > 项目由 AI 助力生成,适用于学习、工具开发和数据迁移场景。 --- ✅ **现在就开始使用吧!将你的 JSON 数据永久保存为结构化数据库!** ✅ --- 📄 保存为 `README.md` 并放在项目根目录即可。