data-type-converter について
data-type-converterは、JSON、CSV、XML、YAML、TOMLファイルを変換するPythonツールとコマンドラインプログラムです。ネストしたデータを扱い、フラット化や書式設定を選べるほか、バッチ変換やメモリ上のデータ変換にも対応します。
主な機能
- 015種類のデータ形式間で変換
- 02ネスト構造のフラット化または保持
- 03配列の処理と可能な範囲での型保持
- 04読みやすい形式で出力
- 05複数ファイルの一括変換
- 06メモリ上または文字列でのデータ変換
活用シーン
- 01JSONレコードをCSVに変換
- 02ネストしたデータを平坦化してCSV出力
- 03YAML設定を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 対応