created: 2022-01-30T05:23:12.000Z

jq で CSV を JSON に変換する

こんなCSVをJSONにする。

1,foo
2,bar

id,name の2カラムのCSVとみなすとこのようになる。

$ cat /tmp/_ \
    | jq --raw-input 'split(",") | {id: .[0], name: .[1]}' \
    | jq -s
{
  "id": "1",
  "name": "foo"
}
{
  "id": "2",
  "name": "bar"
}

--raw-input がミソになっていて、これをつけないと不正な入力として扱われる。 --raw-input をつけると文字列として扱われるので split などの関数でハンドリングすることができる。