本文へスキップ
LeedyBox
支援する

JSON / CSV / YAML / SQL / XML 変換ツール

開発でよく使うデータを、ブラウザ上で変換・構文チェックできます。

変換先:

SQL 入力は INSERT INTO ... VALUES 文(MySQL、PostgreSQL、SQL Server、SQLite 形式)に対応しています。SELECT の結果は CSV として貼り付けてください。CSV の値はテキストとして読み込みます。XML の属性は "@attributes" に、属性や子要素と並ぶ要素のテキストは "#text" に保持されます。処理はすべてブラウザ内で行われます。

使用する前に結果を確認してください。 このツールは現状のまま無保証で提供されており、結果が不完全または誤っている場合があります。 利用規約

形式同士は1対1で対応しません。データ型、ネストした値、特殊文字、非常に大きな数値は変換中に変わることがあります。生成されたSQLは実際のデータベースで検証されていないため、本番データで実行する前にコピーでテストしてください。

使い方

  1. 「入力データ」欄にデータを貼り付けます。「入力」メニューは「自動判定」のままにするか、形式がわかっている場合は JSON、YAML、CSV、SQL、XML のいずれかを選びます。
  2. 「変換先」の横にある形式をクリックします。結果は「出力」に表示され、欄の上のメッセージで変換が完了したことと、精度が失われた可能性のある大きな数値、名前を変更したキー、無視した SQL 文など、確認すべき点が示されます。入力を読み込めない場合は、メッセージにエラーが表示され、「出力」は空になります。
  3. その形式に表示されるオプションを調整します。たとえば CSV では「区切り文字」と「ネストしたデータ」、SQL では「SQL データベース」「文」「テーブル」、XML では「ルート」と「項目」です。オプションを変更するたびに現在の入力が変換し直されるため、形式のボタンをもう一度クリックする必要はありません。
  4. 変換せずに入力を確認するには、「構文チェック」をクリックします。構文が正しいこと、または何が問題なのかが表示され、パーサーが提供する場合は行と列も示されます。
  5. 「出力」を確認してから「結果をコピー」をクリックします。「クリア」を押すと両方の欄が空になります。

よくある質問

貼り付けたデータはどこかに送信されますか?

いいえ。データの解析と変換はブラウザ内の JavaScript で行われ、ツールがデータを LeedyBox にアップロードしたり保存したりすることはありません。ページを開くと、leedybox.com から 2 つのオープンソースライブラリ(YAML 用の js-yaml と CSV 用の PapaParse)が直接読み込まれます。これらはページ内で動作し、データがどこかに送信されることはありません。

「自動判定」はどのように形式を判断しますか?自分で選ぶべきなのはどんなときですか?

{ または [ で始まる入力は JSON、< で始まる入力は XML として読み込まれます。INSERT、CREATE、SET、START、UPDATE、WITH などの SQL キーワードの後に空白が続く形で始まる入力や、-- または /* のコメントで始まる入力は SQL として読み込まれます。それ以外の入力は、1 行目にカンマ、タブ、セミコロンが含まれていればまず CSV として、次に YAML として試されます。次の場合は、「入力」メニューで形式を自分で選んでください。1 つ目は、CSV や YAML が SQL キーワードでもある語で始まる場合です。たとえば Start date や Update time で始まる CSV のヘッダー行は SQL として読み込まれ、失敗します。2 つ目は、YAML の入力のすべての行に同じ数のカンマがある場合です。title: Hello, world の後に tags: news, tech が続くような YAML は、CSV として読み込まれることがあります。3 つ目は、自動判定では認識されないパイプ区切りや 1 列だけの CSV の場合です。4 つ目は、YAML や CSV の入力でエラーになる場合です。自動判定では形式を認識できなかったことしか表示されませんが、形式を選ぶとパーサー自身のエラーが表示され、多くの場合はその発生位置も示されます。

コメントや末尾のカンマを含む JSON、1 行に 1 つのオブジェクトを書いた JSON は使えますか?

「入力」メニューを JSON にすると、有効な JSON だけが受け付けられます。テキストが有効な JSON かどうかを確かめるには、この設定で「構文チェック」を使ってください。「自動判定」では、{ または [ で始まっていても有効な JSON でない入力は、可能であれば YAML のフロー構文として読み込まれ、その旨の注記が表示されます。この場合、末尾のカンマ、シングル引用符、引用符のないキーは使えますが、引用符のないキーにはコロンの後に空白が必要です。{a:1} は、a:1 という名前で値が null のキーとして読み込まれるためです。// や /* */ のコメントは YAML ではコメントにならず、キーや値の一部になったり、入力を読み込めなくなったりするため、先に削除してください。JSON Lines(NDJSON)は出力形式として選べますが、複数行ある場合は入力として読み込まれません。各行を [ と ] で囲み、最後の行以外の各行の後にカンマを付けてください。

YAML から変換すると、1.10 が 1.1 に、01234 が 1234 になるのはなぜですか?

引用符で囲まれていない YAML の値のうち、数値に見えるものは数値として読み込まれます。そのため、1.10 のようなバージョンは 1.1 に、01234 のような郵便番号は 1234 に、0x1F は 31 になります。テキストのまま残すには、YAML でそのような値を引用符で囲んでください。このツールは js-yaml のコアスキーマで YAML を読み込みます。このスキーマは真偽値と日付について YAML 1.2 に従うため、yes、no、on、off や 2026-10-02 のような日付はテキストのまま残り、True や FALSE のような true と false の表記だけが真偽値になります。JSON を YAML に変換する場合、"01234"、"1.10"、"yes" のように誤って解釈されるおそれのある文字列は、引用符付きで書き出されます。

XML の要素が、あるファイルではオブジェクトに、別のファイルでは配列になるのはなぜですか?

同じ親の下で繰り返される子要素は配列になりますが、1 つしかない場合は単なる値またはオブジェクトになります。そのため、<item> が 1 つの <items> と 2 つの <items> では構造が異なります。XML の値はすべてテキストとして読み込まれるため、<id>1</id> は "1" になり、007 は先頭のゼロが残ります。コメントと処理命令は削除されます。CSV と SQL の出力では、<items> のようにキーが 1 つだけのラッパーの中にある配列から行を取り出すため、<item> が 1 つしかない場合は、要素全体が JSON テキストとして 1 つの列に入ります。CSV では「平坦化(a.b.c 列)」を使うと列に分割できます。

MySQL や PostgreSQL のダンプを SQL 入力として貼り付けられますか?

はい。行が INSERT INTO ... VALUES 文で書かれていれば使えます。CREATE TABLE、SET、LOCK などの準備用の文はスキップされ、DROP TABLE などのその他の文は注記付きで無視されます。複数のテーブルの行は 1 つのリストにまとめられるため、テーブルによって列が異なる場合は 1 つずつ貼り付けてください。mysqldump は初期設定では列名を出力しないため、--complete-insert を付けてダンプしない限り、列名は column1、column2 … になります。pg_dump は初期設定では行を COPY ブロックとして書き出し、このツールはそれを読み込めないため、代わりに --column-inserts を付けてダンプしてください。ダンプに関数やストアドプロシージャも含まれている場合は、INSERT 文だけを貼り付けてください。このツールは入力をセミコロンで分割するため、関数本体の中の INSERT がデータとして読み込まれたり、変換が止まったりすることがあります。

CSV ファイルの数値が引用符付きで出力されるのはなぜですか?また、「CREATE TABLE + INSERT」ではどの列の型が使われますか?

CSV の値はすべてテキストとして扱われます。そのため 01234 のような先頭のゼロは保たれますが、42 は JSON では "42"、SQL では '42' になり、空のセルは null や NULL ではなく空の文字列になります。各列の型はその列の値から決まるため、CSV から作成したテーブルはテキストの列になります。型は VARCHAR(255)、255 文字を超える値がある場合は TEXT です(SQL Server では NVARCHAR(255) または NVARCHAR(MAX)、SQLite では TEXT)。入力が JSON または YAML で、列の値がすべて引用符で囲まれていない数値の場合や、すべて true か false の場合は、代わりに数値や真偽値の型になります。整数には整数型(データベースと数値の大きさに応じて INT、INTEGER、BIGINT のいずれか)、小数には浮動小数点型、真偽値には BOOLEAN(SQL Server では BIT、SQLite では INTEGER)が使われます。生成される文には主キー、インデックス、NOT NULL 制約が含まれないため、テーブルに必要な場合は実行する前に追加してください。