JSON変換ツール
JSON、YAML、CSV、XMLをどの向きにも相互変換。エラーメッセージもわかりやすく、すべてブラウザー内で完結します。
JSON変換ツール — JSONとYAML・CSV・XMLを相互に変換
JSON、YAML、CSV、XMLのいずれかを貼り付けて出力したい形式を選ぶだけで、入力に合わせて変換結果が表示されます。変換の向きは自由です。KubernetesマニフェストのためにJSONをYAMLに、APIを呼び出すためにYAMLをJSONに、表計算ソフトで開くためにJSONをCSVに、インポート用スクリプトのためにCSVをJSONに、そして古いサービスがまだXMLしか話さないときにはXMLをJSONに。解析も変換もブラウザー内で行われるため、設定ファイルや顧客データのエクスポートが端末の外に出ることはありません。
このツールは、実際に貼り付けられる現実のファイルを前提に作られています。セミコロン区切りでバイトオーダーマーク付きのExcel書き出しCSV、列に収めなければならない入れ子のオブジェクトを含むJSON、属性だらけのXMLなどです。入力が壊れているときは、黙って失敗する代わりに、行と列でその場所を知らせます。
変換の手順
- 変換元で入力形式を、変換先で出力形式を選びます。
- データを貼り付けるか、ファイルを開くで読み込みます。サンプルを押すと例が表示されます。
- 入力に合わせて結果が表示されます。必要に応じてインデント、CSVの区切り文字、XMLのルート要素を調整します。
- コピーまたはダウンロードを押します。⇄ボタンを使えば、結果を逆向きに変換し直せます。
各形式の特徴
| 形式 | 得意なこと | 主な用途 |
|---|---|---|
| JSON | 厳密なデータ型、入れ子構造、あらゆる環境にあるパーサー | API、JavaScript、NoSQLのドキュメント、設定ファイル |
| YAML | 人が読みやすい、コメントが書ける、記号が少ない | Kubernetes、Docker Compose、CIパイプライン、Ansible |
| CSV | 平坦な表、どの表計算ソフトでも開ける | エクスポート、インポート、レポート、開発者以外に渡すデータ |
| XML | 属性、混在コンテンツ、スキーマ | SOAPサービス、RSSフィード、Officeドキュメント、古い基幹システム |
JSONからCSVへ:入れ子のデータを平坦化する
CSVファイルは平坦な表ですが、JSONはオブジェクトの中にオブジェクトを入れ子にできます。このツールは各レコードを平坦化します。入れ子のオブジェクトは address.city のようなドット区切りの列名になり、配列には tags.0、tags.1 のようにインデックスが付きます。列は見つかったすべてのキーの和集合で、最初に現れた順に並ぶため、あるフィールドを持たないレコードはそのセルが空になるだけです。区切り文字、引用符、改行を含む値はRFC 4180の定めるとおりに引用符で囲んでエスケープされます。これはExcel、Googleスプレッドシート、データベースのインポートツールが想定している形です。
逆にCSVからJSONへ変換するときは、1行目を列名として読み、残りの各行をオブジェクトにします。ドット区切りの列名を入れ子にするにチェックを入れると address.city が再び入れ子のオブジェクトになるため、JSONファイルを表計算ソフト経由で往復させることができます。
CSVでつまずきやすいポイント
- 区切り文字:自動のままにしておくと、1行目を見てカンマ、セミコロン、タブ、パイプのいずれかを選びます。ヨーロッパ版Excelの書き出しはセミコロン区切りですが、この判別で問題なく扱えます。
- 引用符で囲まれたフィールド:引用符内のカンマや改行は値の一部として残り、2つ重ねた引用符
""は1つの引用符になります。 - バイトオーダーマーク:ExcelがUTF-8のCSVの先頭に付ける見えない文字は取り除かれるため、最初の列名がきれいに読み取れます。
- 数値と真偽値:数値とtrue/falseを判別にチェックが入っていると、
42は数値に、trueは真偽値になります。007や1.50のような値は文字列のままです。数値にすると先頭のゼロや末尾の桁が失われてしまうからです。
JSONとYAML
YAMLはJSONの上位互換なので、どのJSONドキュメントも情報を失わずにYAMLへ変換できます。意外な落とし穴があるのは逆方向です。パーサーによっては、引用符なしの yes、no、日付、バージョン番号が別の型に変わってしまいます。このツールはYAML 1.2のコアスキーマでYAMLを読むため、特別扱いされるのは true、false、数値、null だけで、2024-01-01 のような日付は文字列のままです。YAMLを書き出すときは、'yes'、'on'、'1.10' のように他のパーサーが誤読しかねない文字列を引用符で囲みます。コメントとアンカーにはJSONに相当するものがないため、アンカーと << マージキーは完全なコピーに展開され、コメントは削除されます。
JSONとXML
XMLにはJSONにない要素があるため、このツールは広く使われている規則に従います。属性は @ で始まるキーになり、子要素と並ぶテキストは #text に、繰り返される要素は配列になります。したがって <book id="b1"><title>Clean Code</title></book> は {"book": {"@id": "b1", "title": "Clean Code"}} になります。JSONをXMLに変換するときは同じ規則を逆向きに適用し、XMLの名前として使えないキーは、使えない文字がアンダースコアに置き換えられます。JSONのトップレベルに複数のキーがある場合は、ルート要素で外側を包む要素の名前を指定してください。
対処しやすいエラーメッセージ
入力が壊れているときに空の欄を表示するだけの変換ツールは、時間の無駄です。このツールは、何がどこで問題なのかを伝えます。不正なJSONは、そこにあってはならない最初の文字の行と列で報告され、YAMLのエラーにはパーサーが示す理由が添えられ、整形式でないXMLはその位置とともに報告されます。開いた引用符が閉じられていないCSVフィールドも指摘します。放っておくと、ファイルの残り全体を飲み込んでしまうからです。
プライバシー
データはどこにも送信されません。YAMLパーサーは最初にYAMLを選んだときに一度だけ読み込まれ、それ以外はすべてページ内の素のJavaScriptで動きます。そのため、環境設定ファイル、トークンを含むAPIレスポンス、個人データを含むエクスポートにも安心して使えます。
関連ツール
変換前にJSONをチェックしたり見やすく整形したりするには、JSON整形ツールを使ってください。設定ファイルの2つのバージョンを比べるならテキスト比較ツールが便利です。変換の向きが決まっているなら、タスク別のページからすぐに始められます:JSONをYAMLに変換、JSONをCSVに変換、XMLをJSONに変換。JSONをTypeScriptのinterface、Goの構造体、Pythonのモデルに変換したい場合は、JSON型定義ジェネレーターを使ってください。