首页 > 解决方案 > 如何使用 JQ 将 JSON 数组值展平为 CSV

问题描述

我有一个 JSON 文件,其中包含应用程序客户端及其相关的应用程序功能:

{
    "client-A": [
        "feature-x"
    ],
    "client-B": [
        "feature-x",
        "feature-y"
    ],
    "client-C": [
        "feature-z"
    ],
    "client-D": [
        "feature-x",
        "feature-z"
    ],
    ...
}

我正在尝试将其转换为以下 CSV:

client,feature
client-A,feature-x
client-B,feature-x
client-B,feature-y
client-C,feature-z
client-D,feature-x
client-D,feature-z

有什么简单的方法jq可以完成这项工作?

标签: jsoncsvjq

解决方案


不确定这是否是最有效的方法,但您可以使用以下管道进行转换:

<yourfile.json jq -r 'to_entries | .[] | { key: .key, value: .value[] } | [ .key, .value ] | @csv'

to_entries将结构转换为“键值”对,然后可以对其进行操作。该{ key: .key, value: .value[] }位会将数组转换为多行...


推荐阅读