当前位置: 首页 > 知识库问答 >
问题:

Bash脚本在Json中动态添加一个新的键值对

梁丘琛
2023-03-14

我的JSON文件是,

json prettyprint-override">{
  "student1": {
    "Name": "Caroline",
    "Age": "24",
    "email": "Caroline123@gmail.com",
    "Phone": "1234567890",
    "Blood group": "O+ve"
  }
}

我想要的结果是,

{
  "student1": {
    "Name": "Caroline",
    "Age": "24",
    "email": "Caroline123@gmail.com",
    "Phone1": "1234567890",
    "Phone2": "1267345980",
    "Phone3": "9865432130",
    "Blood group": "O+ve"
  }
}

新的键值对Phone1、Phone2和Phone3的值存储在名为values的数组中,需要添加到键Phone的位置

m=1
for i in ${VALUES[@]}
do
  jq --arg newval "$i" '.student1 += { VALUES$m: $newval }' <<<"$filepath"
  let "m += 1"
done

上面是我的代码,但它不工作!谁能帮我得到想要的输出!

共有1个答案

司马德水
2023-03-14

您可以使用=运算符,例如

jq '.student1 += { "Phone2": "1267345980", "Phone3": "9865432130" }'

并使用将现有按键Phone重命名为Phone1

jq --sort-keys '.student1 += { "Phone2": "1267345980", "Phone3": "9865432130" }| .[] | .["Phone1"] = .Phone | del(.Phone) | {"Student1" : . }'

演示

编辑(由于上次编辑):考虑到您有一个数组,例如

$ declare -p VALUES
declare -a VALUES='([0]="\"1267345980\"" [1]="\"9865432130\"")'

还有一个名为Students的JSON文件。json,然后使用

m=2
for i in "${VALUES[@]}" 
do  
  cat <<< $(jq '.student1 += { "Phone'"${m}"'" : '"${i}"'}' Students.json) > Students.json
  let "m += 1"   
done

为了添加带有从数组中提取的键Phone2Phone3的元素

附言:在GNU/Linux上测试

 类似资料:
  • 我有下面的JSON代码,有必要在每个记录的末尾添加键/值,如示例所示。我使用JOLT Transform处理器进行JSON转换。 输入: 预期输出: 非常感谢你的帮助。提前感谢。

  • 问题内容: 我创建了一个非常简单的bash脚本,该脚本运行一些命令。这些命令之一在运行时需要用户输入。即它询问用户“您想等等吗?”,我只想向其发送回车按键,以便脚本将完全自动化。 我将不必在运行时等待输入或其他任何东西,它足以发送按键,输入缓冲区将处理其余部分。 问题答案: 或利用echo生成的隐式换行符(感谢Marcin) 现在我们可以简单地使用以下选项: ,请勿在每次测试后等待按键 即

  • 问题内容: 我想在Linux PATH中添加一个小脚本,因此不必在实际放置在磁盘上的地方实际运行它。 该脚本非常简单,它是关于通过代理赋予apt-get访问权限的,我使它像这样: 然后,我将其保存为apt-proxy.sh,将其设置为+ x(chmod),当我位于该文件所在的目录中时,一切正常。 我的问题是:如何将此 apt-proxy 添加到 PATH, 以便实际上可以将其称为真正的apt-ge

  • 我想在linux路径中添加一个小脚本,这样我就不必在磁盘上实际运行它。 这个脚本非常简单,是关于通过代理提供apt-get访问权限的,我是这样做的: 然后我将其保存为apt代理。sh,将它设置为x(chmod),当我在这个文件所在的目录中时,一切都正常工作。 我的问题是:如何将这个apt-代理添加到PATH中,这样我就可以实际调用它,就好像它是真正的apt-get一样?[从任何地方] 寻找命令行唯

  • 写一个脚本,任意输入一个目录和一个字符串,对输入的字符串进行判断,如果字符串内容等于”ww”,则将该目录下的所有子目录删除,所有子文件拷贝到/var 目录下:如果字符串内容等于”rr”,则在该目录下创建 test1.txt 文件

  • 本文向大家介绍javascript 动态脚本添加的简单方法,包括了javascript 动态脚本添加的简单方法的使用技巧和注意事项,需要的朋友参考一下 异步加载js文件或者异步加载js模块,支持所有浏览器,包括IE,参考至javascript高级编程 1.createScript方法用于创建一个script标签并添加到body标签中 2.createModule方法用于创建一个script脚本的标