Arrays 将列数组转换为行对象数组
我有一个json文件,它表示一个有两列的表 列值位于数组中Arrays 将列数组转换为行对象数组,arrays,json,object,jq,transpose,Arrays,Json,Object,Jq,Transpose,我有一个json文件,它表示一个有两列的表 列值位于数组中 { 'columnA':[1,2,3], “columnB”:[6,7,8] } 我需要将其转换为行数组: [ {'columnA':1,'columnB':6}, {'columnA':2,'columnB':7}, {'columnA':3,'columnB':8}, ]这里有一个解决方案: [range(0; .columnA|length) as $i | {columnA: .columnA[$i], columnB: .c
{
'columnA':[1,2,3],
“columnB”:[6,7,8]
}
我需要将其转换为行数组:
[
{'columnA':1,'columnB':6},
{'columnA':2,'columnB':7},
{'columnA':3,'columnB':8},
]
这里有一个解决方案:
[range(0; .columnA|length) as $i
| {columnA: .columnA[$i], columnB: .columnB[$i]}]
还有一个是keyname中性的,应该适用于任意数量的“列”:
使用
转置内置:
[ [{columnA: .columnA[]}],
[{columnB: .columnB[]}]
] | transpose | map(add)
我想出来了:
[.columnA,.columnB]|转置|映射({“columnA:[0],“columnB:[1]})
转换为数组的数组
转置
转换回对象
你为自己做了什么?纯JSON不为键字段使用单引号转置
会导致错误:无法使用数字索引对象,强制使用到\u项的字符串键
甚至映射(到\u项)
没有导致任何有用的内容,但是map
只会写入一列,不会导致对第二列的任何键访问谢谢。有许多答案可以得出相同的结果。这是第一次接受,谢谢。有许多答案可以得出相同的结果。我已经接受了第一种方法,尽管我喜欢这种方法!
[ [{columnA: .columnA[]}],
[{columnB: .columnB[]}]
] | transpose | map(add)