Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据变量在嵌套中添加标记,同时保留json的其余部分_Json_Jq - Fatal编程技术网

如何根据变量在嵌套中添加标记,同时保留json的其余部分

如何根据变量在嵌套中添加标记,同时保留json的其余部分,json,jq,Json,Jq,我是jq的新手,我已经学会了自己做大多数事情,但这次我要用键盘敲我的头。看看下面的json JSON: 我尝试在.outputLayout.fields[]内部创建一个名为“isIdentifier”的新对,如果.outputLayout.fields[].name为LoadSeqNum,则为true,如果不是,则为false,但我需要保持json的其余部分不变。因此,目标应如下所示: 目标: 我试过这个: jq '.outputLayout.fields[] | . + {"isIdentif

我是jq的新手,我已经学会了自己做大多数事情,但这次我要用键盘敲我的头。看看下面的json

JSON:

我尝试在.outputLayout.fields[]内部创建一个名为“isIdentifier”的新对,如果.outputLayout.fields[].name为LoadSeqNum,则为true,如果不是,则为false,但我需要保持json的其余部分不变。因此,目标应如下所示:

目标:

我试过这个:

jq '.outputLayout.fields[] | . + {"isIdentifier": (if (.name)=="LoadSeqNum" then true else false end)}'
但我当然错过了所有更高层次的东西。当我尝试这样做时:

.outputLayout.fields[].isIdentifier=(if (.outputLayout.fields[].name)=="LoadSeqNum" then true else false end)
我两次得到整件事,一次是真的,另一次是假的。我理解它为什么这么做,但我很难弄清楚什么是可行的。有什么帮助或指向正确的方向吗

.outputLayout.fields[] |= (.isIdentifier = (.displayName == "LoadSeqNum") )
或者同等地,但可能不那么神秘:

.outputLayout.fields |= map( .isIdentifier = (.displayName == "LoadSeqNum") )

谢谢你,这很好用。除了|=操作符,我了解那里发生的大部分事情。我读过这本手册,但很难理解。
.foo |=expr
就像作业
.foo=(.foo | expr)
,但可以使用比简单的“.foo”更复杂的路径表达式。
.outputLayout.fields[] |= (.isIdentifier = (.displayName == "LoadSeqNum") )
.outputLayout.fields |= map( .isIdentifier = (.displayName == "LoadSeqNum") )