在shell中使用逗号分隔的字符串用jq更新JSON列表?

在shell中使用逗号分隔的字符串用jq更新JSON列表?,json,bash,shell,jq,Json,Bash,Shell,Jq,如何使用将值附加到json键 val=""text"",""text"",""text"" jq '.doc[1].DEF[3].value="update comma separated val here" <<< "$jsonStr" 如果您的目标是拆分逗号上的字符串以生成列表,并在jq中使用列表,则可能如下所示: val=text1,text2,text3 jq --arg val "$val" '.whatever.item |= ($val | split(","

如何使用将值附加到json键

val=""text"",""text"",""text""

jq '.doc[1].DEF[3].value="update comma separated val here" <<< "$jsonStr"

如果您的目标是拆分逗号上的字符串以生成列表,并在jq中使用列表,则可能如下所示:

val=text1,text2,text3
jq --arg val "$val" '.whatever.item |= ($val | split(","))' <<<'{"whatever": {}}'
注:

在shell赋值中,成对的双引号集没有意义——它们实际上是相互抵消的,不会成为变量值的一部分。 jq参数-arg用于将该变量从shell上下文传递到jq上下文。 |=构造用于修改嵌套值,同时仍对较大的文档求值。 请遵循指导原则。您的作业与val=text,text,text完全相同;引号没有任何作用,它们不会成为shell变量值的一部分,因为它们被解析为语法。您可以使用echo$val验证这一点。