長いXMLの設定ファイルやフィードは、YAMLにすると読みやすくなります。<server host="db" port="5432"/> は server: の下に @host: db と @port: 5432 が並ぶ形になり、繰り返される要素はリストになります。MavenのPOMやAndroidのマニフェスト、RSSの確認に便利です。
使い方
- データを貼り付けるか、ファイルをドロップまたは開きます。入力形式は自動判定されます(「変換元」で指定も可)。
- 「変換先」で出力形式を選びます。入力に合わせて結果がすぐ更新されます。
- エラーは行と列、^印で正確に表示されます。エラーをタップするとその位置へ移動します。
- 「ツリー」で読み込んだデータを確認できます。結果はコピー・ダウンロードでき、入れ替えボタンで逆変換もできます。
- XMLの属性は@で始まるキーに、要素のテキストは#textになります。XMLを出力するときも同じ規則です。
- CSV出力ではネストしたオブジェクトをドット区切りの列(address.city)に展開します。ダウンロードにはBOMを付けるのでExcelでも文字化けしません。
- TOMLにはnullがなく最上位はテーブルである必要があるため、nullは省き、リストは「items」で囲みます。
- 「数値・真偽値」をオフにすると、CSV・XML・INI・.env・クエリ文字列の値をすべて文字列のまま扱います。
- すべてブラウザ内で処理され、データは送信されません。
形式どうしの対応関係
JSON・YAML・TOMLは、オブジェクト・配列・文字列・数値・真偽値という同じデータモデルを持つため、基本的に情報を失わずに変換できます。例外は2つで、TOMLにはnullがなく、最上位はテーブルでなければなりません。このツールではnullを省き、最上位のリストは items キーの下に入れます。YAML 1.2はJSONの上位互換なので、正しいJSONはそのままYAMLとしても正しい形式です。
XMLはキーと値ではなく要素の木構造です。属性は @ で始まるキーになり(id="7" は "@id": "7")、要素のテキストは #text に入り、同じ名前の子要素が繰り返されると配列になります。XMLを書き出すときも同じ規則を逆向きに使います。
フラットな形式:CSV・INI・.env・クエリ文字列
CSVは表なので、入れ子のオブジェクトは address.city のようなドット区切りの列に展開し、配列の要素ごとに1行になります。INIのセクションはオブジェクトに、.envはキーと値だけのフラットなオブジェクトになります(export、引用符、コメントにも対応)。?tag=a&tag=b&filter[brand]=x のようなクエリ文字列は {"tag": ["a", "b"], "filter": {"brand": "x"}} になります。
型とよくある落とし穴
CSV・XML・INI・.env・クエリ文字列には型がなく、すべてテキストです。初期設定では42、3.5、trueのような値を数値や真偽値に変換します。郵便番号の0010001やIDを文字列のまま残したいときはオフにしてください。YAMLではインデントに意味があり、タブは使えません。PyYAMLなどYAML 1.1のパーサーは引用符なしの yes・no・on・off を真偽値として読むため、国コードのNOのような値は引用符で囲みましょう。
よくある質問
JSONをYAMLに変換するには?
JSONを貼り付けるか.jsonファイルをドロップし、変換先でYAMLを選びます。オブジェクトはインデント付きの「キー: 値」に、配列はハイフンのリストになります。結果はコピーするか.yamlで保存できます。
正しいJSONはそのままYAMLとしても正しいですか?
YAML 1.2はJSONの上位互換として設計されているので、正しいです。それでもブロック形式のYAMLのほうが読みやすくコメントも書けるため、変換する価値はあります。
XMLの属性はJSONでどうなりますか?
@ を付けたキーになります。<item id="7">Pen</item> は {"item": {"@id": "7", "#text": "Pen"}} です。同じ名前の要素が繰り返される場合は配列になります。
入れ子のJSONはCSVでどうなりますか?
address.city や address.zip のようなドット区切りの列に展開されます。オブジェクトの配列は1オブジェクトにつき1行になり、そのままExcelで開けます。
TOMLの出力でnullが消えるのはなぜですか?
TOMLにはnullという値がないためです。値がnullのキーは省かれるので、キーがない場合も同じように扱われるかアプリ側で確認してください。
データはアップロードされますか?
されません。解析と変換はブラウザ内で行うので、パスワードやAPIキーを含む設定ファイルも端末の外に出ません。