我需要你的帮助来解决以下问题:
我有一个JSON文件,如下所示:
我有一个JSON文件,如下所示:
{ "key1": "value1","key2": "value2","key3": "value3" }
如何通过bash脚本添加和删除新的密钥(即“key4”:“value4”)?
在添加或删除新文件之前,我还看到在文件中的最后一个键结尾处添加或删除逗号的问题.
谢谢
@H_301_9@@H_301_9@
你最好的办法是使用诸如
jq
之类的JSON CLI:
>在基于Ubuntu的Debian系统上,您可以通过sudo apt-get install jq安装它
>在OSX上,安装了Homebrew(http://brew.sh/),使用brew install jq
示例,基于以下输入字符串 – 输出是stdout:
jsonStr='{ "key1": "value1","key3": "value3" }'
删除“key3”:
jq 'del(.key3)' <<<"$jsonStr"
jq '. + { "key4": "value4" }' <<<"$jsonStr"
将现有属性“key1”的值更改为“new-value1”:
jq '.key1 = "new-value1"' <<<"$jsonStr"
如果要在现场更新JSON文件(概念上讲),请使用删除“key3”的示例:
# Create test file. echo '{ "key1": "value1","key3": "value3" }' > test.json # Remove "key3" and write results back to test.json (recreate it with result). jq -c 'del(.key3)' test.json > tmp.$$.json && mv tmp.$$.json test.json
您无法直接替换输入文件,因此将结果写入临时文件,成功替换输入文件.
注意-c选项,它生成紧凑而不是漂亮的JSON.
有关所有选项和命令,请参阅http://stedolan.github.io/jq/manual/的手册.
@H_301_9@