如何在 bash 中将记录追加到 json 对象文件

问题描述 投票:0回答:1

我需要循环遍历字典并将记录附加到 json 对象文件 option.json 我的代码是

for K in "${!MYMAP[@]}"; do 
    opt="{
        \"OptionName\":\"${K}\",
        \"Value\":\"${MYMAP[$K]}\"
        },"
    echo $opt >> option.json
done 

但这会产生如下的 option.json

{
    "OptionName": "name",
    "Value": "test"
},
{
    "OptionName": "age",
    "Value": "13"
}

如何使 option.json 成为 json 对象并在对象内附加每个 {},这样我的 option.json 将如下所示

[
    {
        "OptionName": "name",
        "Value": "test"
    },
    {
        "OptionName": "age",
        "Value": "13"
    }
]
json bash jq
1个回答
0
投票

// JSON对象文件的文件路径 json_file="data.json"

//要追加的新记录(可以根据需要修改) new_record='{"id": 3, "name": "John Doe"}'

//从文件中读取已有的JSON内容 json_content=$(cat "$json_file")

// 将 JSON 内容解析为 Bash 数组 readarray -t json_array <<< "$json_content"

// 将新记录追加到 Bash 数组中 json_array+=("$new_record")

// 将 Bash 数组转换回 JSON 字符串 update_json=$(printf "%s " "${json_array[@]}" | jq -s '.')

// 将更新后的 JSON 字符串写回文件 回声“$updated_json”>“$json_file”

echo“记录追加成功。”

© www.soinside.com 2019 - 2024. All rights reserved.