Jas*_*ska 8 merge json concatenation jq
首先,我不是 JSON 文件或 JQ 方面的专家。但这是我的问题:
我只是想通过 API 下载到纸牌数据(用于 MtG 纸牌游戏),所以我可以在我自己的电子表格等中使用它。
来自 API 的卡片数据以页的形式出现,因为它太多了,我试图在 Windows 中找到一种很好的命令行方法来将文件合并为一个。这将使我能够轻松轻松地将信息用作工作簿中的外部数据。
来自 API 的数据如下所示:
{
"object": "list",
"total_cards": 290,
"has_more": true,
"next_page": "https://api.scryfall.com/cards/search?format=json&include_extras=false&order=set&page=2&q=e%3Alea&unique=cards",
"data": [
{
"object": "card",
"id": "d5c83259-9b90-47c2-b48e-c7d78519e792",
"oracle_id": "c7a6a165-b709-46e0-ae42-6f69a17c0621",
"multiverse_ids": [
232
],
"name": "Animate Wall",
......
}
{
"object": "card",
......
}
]
}
Run Code Online (Sandbox Code Playgroud)
基本上,我需要在第一个文件之后从每个文件中取出“数据”部分中的内容,并将其合并到第一个文件中。
我已经尝试了一些使用 jq 在网上找到的示例,但我无法让它工作。我认为这可能是因为在这种情况下,数据在一个额外的级别之下,因为有一些基本信息,那么“数据”类别就在它之下。我不知道。
无论如何,任何有关如何实现这一目标的帮助将不胜感激。我对此知之甚少,但我可以快速学习,因此即使是任何指针都会很棒。
谢谢!
pea*_*eak 10
要将所有响应的 .data 元素合并到第一个响应中,您可以运行:
jq 'reduce inputs.data as $s (.; .data += $s)' page1.json page2.json ...
Run Code Online (Sandbox Code Playgroud)
您可以将以下过滤器与 -n 命令行选项结合使用:
reduce inputs as $s (input; .data += ($s.data))
Run Code Online (Sandbox Code Playgroud)
或者,如果您只是想要表单的对象,{"data": [ ... ]}那么(再次假设您使用 -n 命令行选项调用 jq)以下 jq 过滤器就足够了:
{data: [inputs.data] | add}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4436 次 |
| 最近记录: |