Convert between data formats (JSON, CSV, XML, YAML, TOML). Handles nested structures, arrays, and preserves data types where possible.
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: data-type-converter
description: Convert between data formats (JSON, CSV, XML, YAML, TOML). Handles nested structures, arrays, and preserves data types where possible.
---
# Data Type Converter
Convert data between JSON, CSV, XML, YAML, and TOML formats. Handles nested structures, arrays, and complex data with intelligent flattening options.
## Quick Start
```python
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)
```
## Features
- **5 Formats**: JSON, CSV, XML, YAML, TOML
- **Nested Data**: Flatten or preserve nested structures
- **Arrays**: Handle array data intelligently
- **Type Preservation**: Maintain data types where possible
- **Pretty Output**: Formatted, human-readable output
- **Batch Processing**: Convert multiple files
## API Reference
### Basic Conversion
```python
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")
```
### With Options
```python
# 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")
```
### Programmatic Access
```python
# 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")
```
### Batch Processing
```python
# Convert all JSON files to CSV
converter.batch_convert(
input_dir="./json_files",
output_dir="./csv_files",
output_format="csv"
)
```
## CLI Usage
```bash
# 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 Arguments
| Argument | Description | Default |
|----------|-------------|---------|
| `--input` | Input file | Required |
| `--output` | Output file | Required |
| `--input-dir` | Input directory for batch | - |
| `--output-dir` | Output directory | - |
| `--format` | Output format | From extension |
| `--flatten` | Flatten nested data | False |
| `--indent` | Indentation spaces | 2 |
| `--root` | XML root element | root |
## Conversion Matrix
| From/To | JSON | CSV | XML | YAML | TOML |
|---------|------|-----|-----|------|------|
| **JSON** | - | Yes | Yes | Yes | Yes |
| **CSV** | Yes | - | Yes | Yes | Yes |
| **XML** | Yes | Yes | - | Yes | Yes |
| **YAML** | Yes | Yes | Yes | - | Yes |
| **TOML** | Yes | Yes | Yes | Yes | - |
## Examples
### JSON to CSV (Flat)
```python
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
```
### Nested JSON to Flat CSV
```python
# Input: nested.json
# [{"user": {"name": "John", "email": "j@test.com"}, "orders": 5}]
converter.convert("nested.json", "flat.csv", flatten=True)
# Output: flat.csv
# user.name,user.email,orders
# John,j@test.com,5
```
### YAML Config to JSON
```python
# 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 to JSON
```python
# 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"}}}
```
## Dependencies
```
pyyaml>=6.0
toml>=0.10.0
xmltodict>=0.13.0
pandas>=2.0.0
```
## Limitations
- CSV doesn't support nested data (requires flattening)
- XML attribute handling is basic
- TOML doesn't support null values
- Very deep nesting may cause issues with some formats
- Array handling varies by format
No comments yet. Be the first to comment!