基于同一JSON文件中的另一个数组更新一个数组中的值
我有一个JSON文件,如下所示:基于同一JSON文件中的另一个数组更新一个数组中的值,json,jq,Json,Jq,我有一个JSON文件,如下所示: { "download": [0, 0, 0, 0], "files": [ "file1.txt", "file1.iso", "file2.txt", "file2.iso" ] } 对于文件[]中以.txt结尾的每个元素,我想将下载[]中的相应元素设置为1。在JQ我该怎么做?我在谷歌上搜索了一下,但并不真正理解JQ语法
{
"download": [0, 0, 0, 0],
"files": [ "file1.txt", "file1.iso", "file2.txt", "file2.iso" ]
}
对于
文件[]
中以.txt结尾的每个元素,我想将下载[]
中的相应元素设置为1
。在JQ我该怎么做?我在谷歌上搜索了一下,但并不真正理解JQ语法。在这种情况下,从头开始构建下载
会容易得多
.download = (.files | map(if endswith(".txt") then 1 else 0 end))
但标题询问如何基于另一个数组更新一个数组,下面是一种方法:
.download = reduce (.files | path(.[] | select(endswith(".txt")))) as $p (.download; setpath($p; 1))
在这种情况下,从头开始构建下载将容易得多
.download = (.files | map(if endswith(".txt") then 1 else 0 end))
但标题询问如何基于另一个数组更新一个数组,下面是一种方法:
.download = reduce (.files | path(.[] | select(endswith(".txt")))) as $p (.download; setpath($p; 1))
谢谢,事实上,我通过反复试验找到了第一个解决方案,但第二个非常有用!谢谢,事实上,我通过一些尝试和错误找到了第一个解决方案,但第二个非常有用!