JSON・YAML・CSV変換ツール

ブラウザ内で動作し、何もアップロードされません

JSON、YAML、CSVをどの方向にも変換でき、CSVのデータは表で確認できます。

Input · JSON

Output · YAML

Converted YAML appears here as you type.

Ready
Ln 1, Col 1

JSON、YAML、CSVの使いどころ

JSON、YAML、CSVはいずれもデータをテキストで表しますが、用途が違います。JSONはWeb APIの形式で、厳密でプログラムからパースしやすいのが特徴です。YAMLはJSONと同じ構造(オブジェクト、リスト、文字列、数値、真偽値)を表せますが、波かっこの代わりにインデントを使うため手で編集しやすく、OpenAPIの仕様書、CIパイプライン、Docker ComposeやKubernetesのファイルはたいていYAMLです。CSVは表で、列名のヘッダー行の後に1レコード1行が続きます。

このツールは入力を1つのデータモデルに読み込み、変換先の形式で書き出します。数値は書かれたとおりの桁を保つので、19桁のIDや 1.50 もそのまま変換されます。変換時に判断が必要だったこと(YAMLが数値として読む値、列に展開されたネストしたオブジェクト、2回出てくるキーなど)は、出力の上のメモに一覧表示されます。

YAMLは、標準の現行バージョンであるYAML 1.2のcoreスキーマで読み込みます。true、false、null は値として扱われ、yes、no、on、off は文字列のままです。この点はPyYAMLなど古いYAML 1.1のライブラリとは異なります。YAMLを書き出すときは、どちらのバージョンでも別のものとして読まれうる文字列をすべてクォートするので、"yes"、"007"、"2024-01-01" はどこで読んでも同じ文字列になります。

使い方

  1. 1ツールバーの From と To で形式を選びます。データを Input パネルに貼り付けるか、ファイルをドロップするか、Ctrl+O で開きます(最大5 MB)。.yaml、.csv、.json ファイルを開くと From が自動で設定されます。
  2. 2結果は Output パネルに表示され、入力に合わせて更新されます。CSVが関わる場合は、Table タブで行と列を確認できます。
  3. 3ツールバーに表示されるオプションを調整します。CSVの区切り文字(または Detect)、1行目をヘッダーとするか、数値と true/false をJSONの値にするか、ドット付きの列名をネストさせるか、配列をCSVにどう書き出すかです。
  4. 4入力が無効な場合は、出力パネルとステータスバーに行と列が表示されます。F8でカーソルをその位置に移動できます。
  5. 5Swap(Shift+Alt+S)は出力を入力に移して形式を入れ替えるので、往復変換の結果を確認できます。Ctrl+Z で元に戻せます。
  6. 6出力をコピーするか、Ctrl+S でダウンロードします。

トラブルシューティング

YAMLではインデントにタブを使えません
YAMLのインデントにはスペースしか使えません。行頭のタブをスペースに置き換えてください。ほとんどのエディターで自動変換できます。
値の後に key: の行を続けることはできません
すでに同じ行に値を持つキーの下に、インデントされた行があります。コロンの後の値を削除してインデントした行を子要素にするか、インデントを直してください。
キーが重複しています
YAMLでは、マッピング内の各キーは一意でなければなりません。どちらかの名前を変えるか削除してください。エラーは2つ目のキーを指しています。
4行目のフィールドは5つですが、ヘッダーは4つです
その行のどれかの値が、クォートなしで区切り文字を含んでいるか、ヘッダーの列が1つ足りません。値をクォートする("Pune, MH")か、選んだ区切り文字を確認してください。
郵便番号やIDの先頭のゼロが消える
CSVからの変換では、007 のような値はテキストのままです。YAMLからの場合、クォートなしの 007 はYAMLの標準では数値の7になり、メモにもそう表示されます。テキストとして残すには、YAML側でクォートしてください。
複数のYAMLドキュメントには対応していません
入力に --- で区切られたドキュメントが複数あります。Kubernetesのファイルによくある形です。ドキュメントを1つずつ変換してください。

よくある質問

どのYAML機能に対応していますか?

ブロック形式のマッピングとリスト、[a, b] や {a: 1} のようなフロー形式のコレクション、複数行にわたるプレーン・シングルクォート・ダブルクォートの文字列、chomping指示子付きのリテラル | と折り返し > のブロック文字列、コメント、アンカーとエイリアス、<< のマージキー、!!str タグに対応しています。? による複雑なキー、その他のタグ、1つの入力に複数のドキュメントがある場合は、誤ったデータを出す代わりに、その機能名を示すエラーで止まります。

ネストしたJSONはCSVにどう書き出されますか?

1行が配列の1オブジェクトに対応します。ネストしたオブジェクトは address.city のようなドット付きの名前の列になります。配列は初期設定では1つのセルにJSONテキストとして書き出され、In columns を選ぶと番号付きの列(tags.0、tags.1)に展開されます。列はすべての行のキーを合わせたもので、最初に出てきた順に並びます。null は空のセルになります。

CSVからJSONへの変換では、どんな型になりますか?

Numbers がオンの場合、すでにJSONの数値とまったく同じ形で書かれた値(42、-1.5、1e3)だけが数値になり、true と false は真偽値になります。007、+5、1,000 はテキストのままで、空のセルも同様です。すべての値を文字列のままにするには、Numbers をオフにします。

データはサーバーに送信されますか?

いいえ。パースと変換はブラウザ内で行われます。再読み込みしても消えないように、貼り付けた内容は消去するかタブを閉じるまで、このタブのsession storageに保存されます。Copy link は入力をリンクの # の後ろに入れます。ブラウザはこの部分をサーバーに送りませんが、リンクを渡した相手は内容を読めます。形式や区切り文字などの設定はこのブラウザに保存されます。