JSON 数据生成工具:简介与技术实现
工具简介
JSON 数据生成工具是一款面向开发者、测试工程师和数据分析师的桌面应用,支持通过自定义字段模板,批量生成结构化 JSON 测试数据。该工具具备字段类型丰富、配置灵活、模板管理、批量导出等特性,极大提升测试与开发效率。
主要功能与实现细节
1. 字段配置与模板管理
功能说明:
支持添加、编辑、删除多种类型字段(如姓名、公司、地区、数字、日期、枚举等),每个字段可独立配置属性(如长度、范围、格式等),并可通过拖拽排序。字段配置可保存为模板,方便复用和团队共享。核心实现代码:
1
2
3
4
5# 字段拖拽排序
# utils/drag_sort_helper.py
def enable_listwidget_drag_sort(listwidget, data_list, text_func):
listwidget.setDragDropMode(QAbstractItemView.InternalMove)
# 省略具体同步逻辑界面示意:
下图展示了字段配置区,包括字段类型选择、属性设置和拖拽排序功能。
2. 批量数据生成与导出
功能说明:
用户可指定生成数据条数(如 1~10000 条),一键生成批量 JSON 数据。支持数据预览、复制到剪贴板、导出为 .json 文件,便于快速对接测试。核心实现代码:
1
2
3
4
5
6
7
8
9
10
11
12# 批量生成数据
# ui/main_window.py
def generate_json(self):
count = self.count_spin.value()
if not self.fields:
QMessageBox.warning(self, "提示", "请先添加字段!")
return
result = []
for _ in range(count):
item = generate_item(self.fields)
result.append(item)
self.result_edit.setPlainText(json.dumps(result, ensure_ascii=False, indent=2))界面示意:
见下图,生成区包含生成按钮、条数设置和数据预览区。
3. 用户体验优化
功能说明:
所有输入框、数字框默认无右键菜单,防止误操作。支持自定义右键菜单(如清空、重置、设为最大/最小值等),界面风格自动跟随系统主题,支持深色/高亮模式。字段配置错误有醒目提示,防止生成无效数据。核心实现代码:
1
2
3
4# 自定义无右键菜单数字框
from components.no_context_menu_widgets import NoContextMenuSpinBox
spin = NoContextMenuSpinBox(menu_type="all", default_value=10)
# 右键菜单包含:清空、重置为默认值、设为最小值、设为最大值界面示意:
下图为主界面深色/高亮主题自适应效果。
4. 组件化与可扩展性
功能说明:
所有通用控件(如无右键菜单输入框、数字框)均独立封装,便于项目复用和维护。支持自定义字段类型、生成规则,适合二次开发和业务扩展。核心实现代码:
1
2
3
4
5
6
7
8# 字段生成逻辑(简化版)
# utils/data_generator.py
def generate_field(field_type):
if field_type == 'name':
return random.choice(baijiaxing) + random.choice(mingzi)
elif field_type == 'company':
return random.choice(company_list)
# ... 其他类型项目结构示意:
下图为项目结构图,标注主要模块和组件。
典型使用流程
- 选择或新建字段模板,配置所需字段及类型。
- 配置字段属性,为每个字段设置类型、名称、生成规则(如长度、范围、枚举值等)。
- 拖拽调整字段顺序,保证生成的 JSON 字段顺序符合需求。
- 设置生成条数,点击“一键生成”,实时预览生成结果。
- 导出或复制数据,便于接口测试、前端开发等场景。
- 操作流程图:
下图展示了从模板选择到数据导出的完整流程。
技术亮点与适用场景
- 高度组件化:所有控件和生成逻辑均独立封装,便于复用和维护。
- 配置驱动:字段类型、模板、数据字典等均采用 JSON 配置,灵活扩展,支持热更新。
- 极致用户体验:细节优化,主题自适应,右键菜单可定制,交互友好。
- 易于二次开发:结构清晰,适合团队协作和业务扩展。
本工具适用于前后端接口联调、Mock 数据生成、自动化测试、教学演示、数据可视化等多种场景。