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
期間限定!PayPayで支払うと抽選でお得
この記事が気に入ったらチップで応援してみませんか?