首页 > 解决方案 > 将对象中的值添加到数组的每个元素中

问题描述

我有一个看起来像这样的 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 数据中的其他地方访问一个值?

标签: jsonjq

解决方案


或者没有变量:

jq -r '.data | [.id] + (.details[] | [.vid, .long, .lat]) | @csv' file.json

如果您真的希望引用所有值,只需map(tostring)在 final 之前添加到管道中@csv


推荐阅读