我有一个看起来像这样的json对象:
{
"data": {
"id" : 1234,
"details": [
{
"vid": "332",
"long": -79,
"lat": 45
},
{
"vid": "33",
"long": -77,
"lat": 32
}
]
}
}
我想从如下数据中输出一个csv文件:
"1234","332","-79", "45"
"1234", "33", "-77", "32"
例如我想从另一个节点的数组对象中的每个节点中添加一些东西,实质上是对数据进行非规范化。
是否可以从json数据中的其他位置访问值?
答案 0 :(得分:2)
或者没有变量:
jq -r '.data | [.id] + (.details[] | [.vid, .long, .lat]) | @csv' file.json
如果您真的希望所有值都被引用,只需在流水线的最后一个map(tostring)
之前将@csv
添加到管道中即可。
答案 1 :(得分:1)
您可以使用变量来做到这一点:
jq '.data.id as $id | .data.details[] | [$id, .vid, .long, .lat]' file.json