1. ホーム
  2. json

[解決済み] Bash変数でJSON文字列を構築する

2022-09-11 19:41:45

質問

私はbashの変数をJSON文字列に読み込む必要がありますが、私はbashに精通していません。

#!/bin/sh

BUCKET_NAME=testbucket
OBJECT_NAME=testworkflow-2.0.1.jar
TARGET_LOCATION=/opt/test/testworkflow-2.0.1.jar

JSON_STRING='{"bucketname":"$BUCKET_NAME"","objectname":"$OBJECT_NAME","targetlocation":"$TARGET_LOCATION"}'


echo $JSON_STRING 

どのように解決するのですか?

のようなプログラムを使用するのがよいでしょう。 jq のようなプログラムを使ってJSONを生成する方が良いでしょう。もし変数の内容がJSONに含めるために適切にエスケープされているかどうか事前に分からない場合は、JSONを生成するために そうでなければ、単に無効な JSON を生成してしまうだけです。

BUCKET_NAME=testbucket
OBJECT_NAME=testworkflow-2.0.1.jar
TARGET_LOCATION=/opt/test/testworkflow-2.0.1.jar

JSON_STRING=$( jq -n \
                  --arg bn "$BUCKET_NAME" \
                  --arg on "$OBJECT_NAME" \
                  --arg tl "$TARGET_LOCATION" \
                  '{bucketname: $bn, objectname: $on, targetlocation: $tl}' )