json - 使用jq解析数组并映射到字符串

标签 json join jq

我有以下 JSON 数据结构:

{
    "data": [
        [
            {
                "a": "1",
                "b": "i"
            },
            {
                "a": "2",
                "b": "ii"
            },
            {
                "a": "3",
                "b": "iii"
            }
        ],
        [
             {
                "a": "4",
                "b": "iv"
            },
            {
                "a": "5",
                "b": "v"
            },
            {
                "a": "6",
                "b": "vi"
            }
        ]
    ]
}

我需要得到以下输出:
1+2+3 i|ii|iii
4+5+6 iv|v|vi

我尝试了以下方法但没有成功:

$ cat data.json | jq -r '.data[] | .[].a | join("+")'
jq: error (at <stdin>:1642): Cannot iterate over string ("1")

还有这个,但我什至不知道如何解决这个问题:

$ cat data.json | jq -r '.data[] | to_entries | .[]'

此时对我来说似乎是一个无尽的旅程,我你能帮助我,我会很高兴。 :-)

最佳答案

应该很简单。将两个字段放入一个数组中,用所需的分隔符将它们连接起来,然后将其放入表格格式

jq -r '.data[] | [ ( map(.a) | join("+") ), ( map(.b) | join("|") ) ] | @tsv'

关于json - 使用jq解析数组并映射到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65184635/

相关文章:

c# - 无法将 JSON 数组反序列化为类型

arrays - JSON 架构 : First Item of Array

php - 多组 html 复选框的相同 Javascript

MySQL 通过创建更多列而不是行来连接表

mysql - 跨 MySQL 和 MongoDB/HBase 的 JOIN 以获取分析数据

json - 如何使用公用 key 组合并附加两个json文件而不丢失其他数据

json - 无法在 Unix shell 中使用 JQ 遍历 JSON 响应对象

linux - JSON 转义 CURL/JQ 输出

ios - 在 json 中返回的错误解码数组 - swift

ruby - 将类的 Ruby 数组转换为 JSON