home / skills / dkyazzentwatwa / chatgpt-skills / data-type-converter

data-type-converter skill

/data-type-converter

This skill converts data between JSON, CSV, XML, YAML, and TOML, preserving types and handling nested structures for reliable cross-format workflows.

npx playbooks add skill dkyazzentwatwa/chatgpt-skills --skill data-type-converter

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
4.4 KB
---
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": "[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 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

Overview

This skill converts data between JSON, CSV, XML, YAML, and TOML with attention to nested structures, arrays, and type preservation. It offers flattening options for formats that can't represent nesting (like CSV) and produces human-readable, pretty-printed output. Batch and programmatic interfaces let you convert files or strings at scale.

How this skill works

The converter auto-detects formats from file extensions or accepts explicit format names, loads the source into a normalized in-memory representation, then serializes to the target format. It can flatten nested objects into dotted keys for CSV, preserve arrays where supported, and attempt to maintain native types (numbers, booleans) when converting. CLI and API methods support in-place files, directory batch jobs, and string-to-string conversions.

When to use it

  • Migrate configuration files between YAML, JSON, and TOML for different environments.
  • Export nested JSON data to CSV for analysis while preserving field structure via flattening.
  • Convert XML APIs to JSON for easier downstream processing.
  • Batch convert many files across formats as part of a data pipeline.
  • Quickly pretty-print or reformat files for readability or version control.

Best practices

  • Use flattening when exporting to CSV and verify column names for deeply nested keys.
  • Specify an explicit root element when converting to XML to control document structure.
  • Validate type-sensitive fields after conversion—TOML and CSV have known type limitations.
  • Use the preview or string-conversion functions to check results before batch processing.
  • Keep indentation settings for consistent, human-readable output in source control.

Example use cases

  • Convert application config.yaml to config.json for services that only accept JSON.
  • Flatten nested user records JSON into flat.csv for import into analytics tools.
  • Transform XML API dumps into YAML for easier manual inspection and editing.
  • Batch-convert a folder of JSON fixtures to TOML for local development tooling.
  • Pretty-print minified JSON into an indented file for code review.

FAQ

Does CSV support nested structures?

Not natively; use the flatten option to convert nested keys to dotted column names.

Will numeric and boolean types be preserved?

The converter preserves types where target formats support them, but some formats (CSV, TOML nulls) have limitations—verify critical fields after conversion.