Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 使用jq修改对象数组中的同一字段_Json_Jq_Edit - Fatal编程技术网

Json 使用jq修改对象数组中的同一字段

Json 使用jq修改对象数组中的同一字段,json,jq,edit,Json,Jq,Edit,我有一个对象数组,其中每个对象的结构如下: { "impl": "pmdk", "pc_writes": 50, "threads": 1, "throughput (K tps)": 703014, "med_latency (ns)": 1334, "99_latency (ns)": 2358, "

我有一个对象数组,其中每个对象的结构如下:

 {
   "impl": "pmdk",
   "pc_writes": 50,
   "threads": 1,
   "throughput (K tps)": 703014,
   "med_latency (ns)": 1334,
   "99_latency (ns)": 2358,
   "exec_time (s)": 14224471006
 }
我想将每个对象中的吞吐量K tps字段除以1000,并以相同的格式返回数组。我尝试通过以下方式使用map_值:

map_values(."throughput (K tps)"/1000)
但它只返回一个修改值数组,如下所示:

[703.014,...]
而不是整个对象,如下所示:

 [{
   "impl": "pmdk",
   "pc_writes": 50,
   "threads": 1,
   "throughput (K tps)": 703.014,
   "med_latency (ns)": 1334,
   "99_latency (ns)": 2358,
   "exec_time (s)": 14224471006
 },
 ...
 ]
在将一个字段除以1000后,如何返回一个对象数组

jq '.[] | ."throughput (K tps)" |= . / 1000'
应通过将其除以1000来编辑每个吞吐量K tps

应通过将其除以1000来编辑每个吞吐量K tps

告诉jq将吞吐量K tps中的值除以1000:

jq '.[]."throughput (K tps)" |= . / 1000' file.json
告诉jq将吞吐量K tps中的值除以1000:

jq '.[]."throughput (K tps)" |= . / 1000' file.json
您可以使用map或map_值来解决问题。但您尝试的问题是,您只是修改了用于打印到输出的现场吞吐量K tps

如果没有|=update赋值运算符,则只有表达式中提到的字段才会打印到控制台

您可以使用运算符

但是jq为您提供了更多的表单+=、*=和/=,因此您可以

map(."throughput (K tps)" /= 1000)
您可以使用map或map_值来解决问题。但您尝试的问题是,您只是修改了用于打印到输出的现场吞吐量K tps

如果没有|=update赋值运算符,则只有表达式中提到的字段才会打印到控制台

您可以使用运算符

但是jq为您提供了更多的表单+=、*=和/=,因此您可以

map(."throughput (K tps)" /= 1000)