360 Secure SkillHub
360 安全技能中心

Config Format Converter

核心功能涵盖JSON、YAML、TOML三种配置格式互转、语法验证及格式化。适用于跨平台项目配置统一、CI/CD配置迁移、代码提交前校验等场景。输入为对应格式的配置文件或结构化数据,输出转换后的标准文件或语法验证结果,适配npm、Python Poetry等主流工具配置。

leonardodpanda
leonardodpanda
热度 25.71
最近更新 2026-05-11 17:28:19
分类:效率依赖:代码执行 / 读写文件应用场景:文件转换 / 自动化脚本 / DevOps

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add config-format-converter
Metadata
name
config-format-converter
description
Convert and validate configuration files between JSON, YAML, and TOML formats. Use when working with config files that need format conversion, syntax validation, or pretty-printing. Supports package.json, pyproject.toml, .yaml/.yml configs, and any structured data files. Ideal for cross-platform project setup, CI/CD config migration, and developer tooling workflows.

Config Format Converter

Universal configuration file format converter for JSON, YAML, and TOML.

When to Use

  • Converting package.json to pyproject.toml or vice versa
  • Migrating CI/CD configs between formats (.yaml ↔ .json)
  • Normalizing config files for cross-platform projects
  • Validating syntax before committing config changes
  • Pretty-printing minified config files

Supported Formats

Format Extensions Use Cases
JSON .json npm, Node.js, VS Code settings
YAML .yaml, .yml Docker Compose, GitHub Actions, Kubernetes
TOML .toml Python Poetry, Rust Cargo, Go modules

Quick Start

Convert Between Formats

import json
import yaml
import toml

# JSON to YAML
with open('package.json') as f:
    data = json.load(f)
with open('package.yaml', 'w') as f:
    yaml.dump(data, f, default_flow_style=False, sort_keys=False)

# YAML to JSON
with open('docker-compose.yaml') as f:
    data = yaml.safe_load(f)
with open('docker-compose.json', 'w') as f:
    json.dump(data, f, indent=2)

# TOML to JSON
with open('pyproject.toml') as f:
    data = toml.load(f)
with open('pyproject.json', 'w') as f:
    json.dump(data, f, indent=2)

Validate Config Syntax

import json
import yaml

def validate_json(filepath):
    try:
        with open(filepath) as f:
            json.load(f)
        return True, "Valid JSON"
    except json.JSONDecodeError as e:
        return False, str(e)

def validate_yaml(filepath):
    try:
        with open(filepath) as f:
            yaml.safe_load(f)
        return True, "Valid YAML"
    except yaml.YAMLError as e:
        return False, str(e)

Pretty-Print Configs

import json

# Compact to pretty JSON
with open('config.min.json') as f:
    data = json.load(f)
with open('config.json', 'w') as f:
    json.dump(data, f, indent=2, ensure_ascii=False)

Common Workflows

Migrate npm Project to Python Poetry

import json
import toml

# Read package.json
with open('package.json') as f:
    pkg = json.load(f)

# Create pyproject.toml structure
pyproject = {
    'tool': {
        'poetry': {
            'name': pkg.get('name', ''),
            'version': pkg.get('version', '0.1.0'),
            'description': pkg.get('description', ''),
            'authors': [],
            'dependencies': {}
        }
    }
}

# Write TOML
with open('pyproject.toml', 'w') as f:
    toml.dump(pyproject, f)

Convert Docker Compose YAML to JSON for CI

import yaml
import json

with open('docker-compose.yaml') as f:
    compose = yaml.safe_load(f)

with open('docker-compose.json', 'w') as f:
    json.dump(compose, f, indent=2)

Best Practices

  • Preserve comments: YAML/TOML comments are lost in conversion; document important notes separately
  • Key ordering: Use sort_keys=False to preserve original key order
  • Unicode: Always use ensure_ascii=False for international configs
  • Validation: Always validate output after conversion
  • Backup: Keep original files before bulk conversion

Error Handling

Common issues and solutions:

Issue Cause Fix
ScannerError Invalid YAML syntax Check indentation (spaces, not tabs)
TomlDecodeError Invalid TOML syntax Verify section headers [section]
JSONDecodeError Trailing commas in JSON Remove commas before } or ]
Unicode errors Encoding mismatch Open files with encoding='utf-8'

Dependencies

pip install pyyaml toml