見出し画像

IT エンジニア日記 ~CSV から JSON を作成~ -2024/07/26-

どうも。スクリプト言語とか大好きな clown です。

作って即実行。トライ&エラーがやりやすいのが魅力かなーと思う。

そんな僕。

Shell Script を書いていて、CSV ファイルから json を作る必要があった。
curl でリクエストを投げるときのボディにするのが目的。

こんなデータ
hoge
fuga

これをこういうJSONに整形したい。

{
  "input": [
    {
      "data": "hoge"
    },
    {
      "data": "fuga"
    }
  ]
}

ここは jq コマンドでなんとかなりそう。echo を駆使したり、sed や awk を組み合わせてもいいんだけど、そんなに複雑じゃなくてもいい。
ということで書いたスクリプトがこんな感じ。

# 入力を生文字列として読む、かつ null 入力モード
jq -s -Rn '
  # 入力を改行で分割しつつ、各行をリスト要素にする。空行を除外
  (input | split("\n") | map(select(length > 0)))
  # 上記を変数に格納
  as $input |
  # リストの各要素を "data" キーを持つオブジェクトにして、"input" キーオブジェクトにする 
  {"input": $input | map({"data": .})}
' "${CSV_FILE}"

null が含まれる可能性があるなら、こういうコードを追加すれば良い感じ。

jq -s -Rn '
  # 上との違いは、and . != "" で null を除外していること
  (input | split("\n") | map(select(length > 0 and . != ""))) as $input |
  {"input": $input | map({"data": .})}
' "${CSV_FILE}"

これで目的の JSON ボディが作れたよ。


掲げている使命

好きとスキルを駆使して、心身と経済が豊かな日本社会を創造する

いま、目の前で困っていることがある方のために僕の「好き」と「スキル」がお役にたつかもしれません。
こちら(↓)の自己紹介で僕の得意を書いていますので、お困り事のある方は、コメントをいただけるとありがたいです。


支援のお願い

本記事は無料でお読みいただけますが、投げ銭形式にしているので、気に入ったらご購入いただけると嬉しいです。
また、下記リンクのご支援をいただけると励みになります。

素材引用元

アイコン

見出し

ここから先は

0字

¥ 100

この記事が気に入ったらサポートをしてみませんか?