Pack Camo

データ変換ツール

JSON・YAML・TOML・CSV・Markdownの間で構造化テキストを相互変換します。 処理はすべて端末内で完結し、アップロードは一切ありません。

入力
JSON · JSONL · YAML · TOML · CSV · TSV · Markdown
出力
JSON · JSONL · YAML · TOML · CSV · TSV · HTML

入力

JSON · 320 B

結果

YAML

1本のツリー、6つの形式

どの変換も、まず入力を1本の型付きツリーとして解析し、そのツリーを目的の形式で書き出します。だからこそ往復が正直に保たれます。数値は数値のまま、入れ子構造は失われず、オブジェクトのキーは書かれた順序を保ったまま、勝手にアルファベット順に並べ替えられることもありません。形式を1つ増やす作業がパーサー1つとシリアライザー1つで済み、組み合わせごとの特別扱いが増えないのも同じ理由です。

各形式の得意分野

JSON
標準的な交換形式。入れ子と型をそのまま保ちます。
YAML
設定ファイル向きでコメントも書けますが、コメントは変換後には残りません。
TOML
ルートにテーブルが必要です。nullは取り除かれます — TOMLにその値はありません。
CSV
表計算にそのまま使えます。オブジェクトの配列が必要で、入れ子の値はJSONのセルになります。
TSV
タブ区切りのCSV。データにカンマが多いときはこちらが安全です。
JSONL
1行に1文書。ログのパイプラインやLLMのデータセットが使う形式です。

扱いにくい部分を、あえてこう扱っています

  • CSVには型がありません。 セルが数値になるのは、その数値を書き戻したときに元のテキストと完全に一致する場合だけです。したがって 007 は文字列のままで、12 は数値になります。
  • CSVには入れ子がありません。 入れ子のデータから表を書き出すときは、入れ子の値をセル内にJSONとして残します。あとで元に戻さなければならない独自の平坦化ルールを勝手に作ることはしません。
  • TOMLにはnullがありません。 値がnullのキーは、文書全体を失敗させる代わりに取り除かれます。またルートがオブジェクトでない入力はそのまま拒否されます — TOMLはそこにテーブルを必要とするからです。
  • コメントはデータではありません。 YAMLやTOMLのコメントはツリーの外側にあるため、変換を越えて残ることはありません。どんな方法でも運べません。

よくある質問

JSONをYAMLに、あるいはYAMLをJSONに変換するには?
文書を貼り付けるかドロップし、自動判定された入力形式を確認して、出力形式を選んでください。どちらの方向も同じ型付きツリーを通るため、入れ子・数値・真偽値はそのまま保たれます。
CSVをJSONに変換すると先頭のゼロは残りますか?
残ります。セルが数値に変換されるのは、その数値を書き戻したときに元のテキストと完全に一致する場合だけです。そのため007のようなIDは文字列「007」のままで、12は数値の12になります。
JSONのキーの順序は保たれますか?
保たれます。オブジェクトのキーはアルファベット順に並べ替えられず、文書中の順序を維持するため、出力は元のファイルとそのまま差分比較できます。
TOMLへの変換が失敗するのはなぜですか?
TOMLは最上位にテーブルを必要とするため、配列や単独の値は表現できません。またTOMLにはnullがなく、値がnullのキーは文書全体を失敗させる代わりに取り除かれます。
JSONLとは何で、どんなときに使いますか?
JSONL(NDJSONとも呼ばれます)は、1行に1つのコンパクトなJSON文書を置く形式です。ログのパイプラインや機械学習のデータセットで使われており、ファイル全体を先に解析しなくても1レコードずつストリーム処理できるのが理由です。