我有一个JSON对象如下
{“Sample”:[{“key”:“KeyName”,“values”:[[1025409600000, 10],[1028088000000,-6.3382185140371] ]}]}
使用javascript我可以修改任何值,如下所示
data.Sample[0].values.push([1028088000000,0]);
如何使用jq命令行json处理器执行类似的操作?所以JSON对象变成了
{“Sample”:[{“key”:“KeyName”,“values”:[[1025409600000,10], [1028088000000,0]]}]}
谢谢。
答案 0 :(得分:2)
由于Javascript的Array.push附加到数组,因此问题中存在一个错误。
给定表达式的jq等价物:
data.Sample[0].values.push([1028088000000,0]);
将是:
.Sample[0].values += [[1028088000000,0]]
或者如果您想使用Javascript语法,您可以定义def push(x): .[length] = x;
如果你想将values
数组中的最后一个值替换为另一个值,比如$ x,你可以(使用jq 1.5或更高版本)写:
.Sample[0].values[-1] = $x
更强大(针对不同的jq版本)方法将是:
.Sample[0].values |= (.[length-1] = $x)
使用jq 1.5或更高版本,如果你只想将负数更改为0,你会写:
.Sample[0].values[-1][-1] = 0
等