データ形式変換

構造化データの形式を相互に変換するツール。APIレスポンスのJSONをCSVにして表計算ソフトで開いたり、XMLをJSONやYAMLで確認したりできる。

データ形式変換

XMLの属性は「@名前」、テキストは「#text」のキーに対応。CSV・TSVは1行目を見出しとして扱う。

入力形式
出力形式
87文字
出力(YAML)
- name: Restring
  category: dev
- name: YAML
  category: format

使い方

  1. 入力形式と出力形式を選び、データを入力する。
  2. 変換結果をコピーまたは保存する。
  3. 「入れ替え」で入力形式と出力形式を入れ替え、変換結果を次の入力にする。

こんな用途に

  • APIレスポンスのJSONをCSVにして、表計算ソフトで開きたいとき。
  • XMLのレスポンスや設定ファイルを、読みやすいJSONやYAMLで確認したいとき。
  • CSVの表データを、テストデータや設定用のJSON・YAMLに書き換えたいとき。

仕組み

  • 入力をいったんJavaScriptの値に変換し、出力形式で書き出す。
  • XMLは属性を「@名前」、テキストを「#text」のキーに対応させ、同名の子要素は配列にする。
  • CSV・TSVはRFC 4180に沿って引用符と改行を扱い、1行目を見出しとしてオブジェクトの配列にする。

確認ポイント

  • XMLから変換した値はすべて文字列になる。数値として扱う場合は変換後に型を確認する。
  • CSVへ変換できるのはオブジェクトの配列。XMLのようにキー1つで包まれたデータは中の配列を表にし、入れ子の値はJSON文字列としてセルに入る。
  • XMLのルート要素は1つのため、キーが1つのオブジェクト以外は<root>で包んで出力する。

手元でやるには

JSONをCSVへ変換

必要環境: jq
jq -r '(.[0] | keys_unsorted) as $k | $k, (.[] | [.[$k[]]]) | @csv' input.json

XMLをJSONへ変換

必要環境: yq(要インストール)
yq -p=xml -o=json input.xml

よくある質問

XMLの属性はどう変換される?

属性は「@id」のように@付きのキー、要素のテキストは「#text」のキーになる。xml2jsやyqと同じ慣習で、逆方向の変換でも属性として復元される。

Excelで作ったCSVは読み込める?

UTF-8のCSVに対応し、先頭のBOMは自動で除去する。Shift_JISで保存したCSVは、文字コード変換ツールでUTF-8にしてから入力する。

関連ツール