微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过bash脚本来更改json文件

我需要你的帮助来解决以下问题:
我有一个JSON文件,如下所示:
{
  "key1": "value1","key2": "value2","key3": "value3"
}

如何通过bash脚本添加删除新的密钥(即“key4”:“value4”)?
添加删除文件之前,我还看到在文件中的最后一个键结尾处添加删除逗号的问题.

谢谢

你最好的办法是使用诸如 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"

添加属性“key4”,值为“value4”:

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/的手册.

原文地址:https://www.jb51.cc/bash/386751.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐