关于 data-type-converter
data-type-converter 是用于转换 JSON、CSV、XML、YAML 和 TOML 文件的 Python 工具及命令行程序。它可处理嵌套数据,提供展平和格式选项,也支持批量转换及内存中的数据转换。
主要功能
- 01在五种数据格式间转换
- 02展平或保留嵌套结构
- 03处理数组并尽可能保留类型
- 04生成格式清晰的输出
- 05批量转换多个文件
- 06在内存中或以字符串转换数据
适用场景
- 01将 JSON 记录转换为 CSV
- 02展平嵌套数据以导出 CSV
- 03将 YAML 配置转换为 JSON
- 04批量转换目录中的文件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dkyazzentwatwa/ chatgpt-skills --skill data-type-converter安装后在 Claude Code 中输入/data-type-converter确认已加载。
附带文件scripts/data_converter.pyscripts/requirements.txt
详细介绍
数据类型转换器
在 JSON、CSV、XML、YAML 和 TOML 格式之间转换数据。支持嵌套结构、数组和复杂数据,并提供智能扁平化选项。
快速开始
from scripts.data_converter import DataTypeConverter
# JSON to CSV
converter = DataTypeConverter()
converter.convert("data.json", "data.csv")
# YAML to JSON
converter.convert("config.yaml", "config.json")
# With options
converter.convert("data.json", "data.csv", flatten=True)
功能
- 5 种格式:JSON、CSV、XML、YAML、TOML
- 嵌套数据:扁平化或保留嵌套结构
- 数组:智能处理数组数据
- 类型保留:尽可能保留数据类型
- 美观输出:格式化且易于阅读的输出
- 批量处理:转换多个文件
API 参考
基本转换
converter = DataTypeConverter()
# Auto-detect format from extension
converter.convert("input.json", "output.csv")
converter.convert("input.xml", "output.json")
converter.convert("input.yaml", "output.toml")
使用选项
# Flatten nested structures for CSV
converter.convert("nested.json", "flat.csv", flatten=True)
# Pretty print output
converter.convert("data.json", "pretty.json", indent=4)
# Specify root element for XML
converter.convert("data.json", "data.xml", root="records")
编程访问
# Load and convert in memory
data = converter.load("data.json")
converter.save(data, "data.yaml")
# String conversion
json_str = '{"name": "John", "age": 30}'
yaml_str = converter.convert_string(json_str, "json", "yaml")
批量处理
# Convert all JSON files to CSV
converter.batch_convert(
input_dir="./json_files",
output_dir="./csv_files",
output_format="csv"
)
CLI 用法
# Basic conversion
python data_converter.py --input data.json --output data.csv
# With flattening
python data_converter.py --input nested.json --output flat.csv --flatten
# Batch convert
python data_converter.py --input-dir ./json --output-dir ./csv --format csv
# Pretty print
python data_converter.py --input data.json --output pretty.json --indent 4
CLI 参数
| 参数 | 描述 | 默认值 |
|---|---|---|
--input | 输入文件 | 必填 |
--output | 输出文件 | 必填 |
--input-dir | 批量处理的输入目录 | - |
--output-dir | 输出目录 | - |
--format | 输出格式 | 根据扩展名确定 |
--flatten | 扁平化嵌套数据 | False |
--indent | 缩进空格数 | 2 |
--root | XML 根元素 | root |
转换矩阵
| 来源/目标 | JSON | CSV | XML | YAML | TOML |
|---|---|---|---|---|---|
| JSON | - | 是 | 是 | 是 | 是 |
| CSV | 是 | - | 是 | 是 | 是 |
| XML | 是 | 是 | - | 是 | 是 |
| YAML | 是 | 是 | 是 | - | 是 |
| TOML | 是 | 是 | 是 | 是 | - |
示例
JSON 转 CSV(扁平数据)
converter = DataTypeConverter()
# Input: data.json
# [{"name": "John", "age": 30}, {"name": "Jane", "age": 25}]
converter.convert("data.json", "data.csv")
# Output: data.csv
# name,age
# John,30
# Jane,25
嵌套 JSON 转扁平 CSV
# Input: nested.json
# [{"user": {"name": "John", "email": "[email protected]"}, "orders": 5}]
converter.convert("nested.json", "flat.csv", flatten=True)
# Output: flat.csv
# user.name,user.email,orders
# John,[email protected],5
YAML 配置转 JSON
# Input: config.yaml
# database:
# host: localhost
# port: 5432
# debug: true
converter.convert("config.yaml", "config.json")
# Output: config.json
# {"database": {"host": "localhost", "port": 5432}, "debug": true}
XML 转 JSON
# Input: data.xml
# <users>
# <user><name>John</name><age>30</age></user>
# </users>
converter.convert("data.xml", "data.json")
# Output: data.json
# {"users": {"user": {"name": "John", "age": "30"}}}
依赖项
pyyaml>=6.0
toml>=0.10.0
xmltodict>=0.13.0
pandas>=2.0.0
限制
- CSV 不支持嵌套数据(需要先进行扁平化)
- XML 属性处理较为基础
- TOML 不支持 null 值
- 嵌套层级过深可能会导致某些格式出现问题
- 数组处理方式因格式而异
评论
支持 Markdown