如何使用jq对json解析结果进行分组

lxkprmvk  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(109)

我是来自终端的jq,来用curl解析和过滤REST API
低于响应

{
    "result": [
        {
            "fxid": "03e401a",
            "id": "123"
        },
        {
            "fxid": "03e4099",
            "id": "567"
        },
        {
            "fxid": "867",
            "id": "666"
        }   
    ]
}

字符串
和. jq过滤器

.result[].fxid,.result[].id


我得到的结果如下
第一个月
但是我想要如下的过滤结果,像json响应中的每个数组元素的分组,有人能帮我这个jq过滤器吗

"03e401a"
"123"
_________
"03e4099"
"567"
_______
"867"
"666"


尝试了不同的jq过滤器,但都没有效果

lymnna71

lymnna711#

.result[].fxid, .result[].id

字符串
分别在.result上迭代两次。这样,,就连接了两个列表。
相反,迭代一次,使用管道更新上下文,然后连接两个(或更多)项。这样,迭代发生在连接之外:

jq -r '.result[] | .fxid, .id'
03e401a
123
03e4099
567
867
666

的数据
Demo
要生成块,只需添加更多(静态)项。例如:

jq -r '.result[] | .fxid, .id, "---"'
03e401a
123
---
03e4099
567
---
867
666
---

的字符串
Demo
如果你想保留值的JSON编码,但不想保留分隔符的JSON编码,可以使用@json重新编码:

jq -r '.result[] | (.fxid, .id | @json), "_________"'
"03e401a"
"123"
_________
"03e4099"
"567"
_________
"867"
"666"
_________

的字符串
Demo

r6l8ljro

r6l8ljro2#

.result | map("\(.fxid)\n\(.id)") | join("\n------\n")

字符串
会给予

03e401a
123
------
03e4099
567
------
867
666


当使用--raw-output选项运行jq时。
这个想法是用一个换行符(\n)连接idfxid,然后用一些换行的水平行连接join每个项目。
演示:


的数据

相关问题