データ形式変換
構造化データの形式を相互に変換するツール。APIレスポンスのJSONをCSVにして表計算ソフトで開いたり、XMLをJSONやYAMLで確認したりできる。
データ形式変換
XMLの属性は「@名前」、テキストは「#text」のキーに対応。CSV・TSVは1行目を見出しとして扱う。
87文字
出力(YAML)
- name: Restring category: dev - name: YAML category: format
使い方
- 入力形式と出力形式を選び、データを入力する。
- 変換結果をコピーまたは保存する。
- 「入れ替え」で入力形式と出力形式を入れ替え、変換結果を次の入力にする。
こんな用途に
- 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へ変換
必要環境: jqjq -r '(.[0] | keys_unsorted) as $k | $k, (.[] | [.[$k[]]]) | @csv' input.jsonXMLを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にしてから入力する。