gpt4 book ai didi

json - Bash 脚本使用 jq 遍历多行 JSON 对象

转载 作者:行者123 更新时间:2023-12-02 15:27:28 24 4
gpt4 key购买 nike

我必须 curl 到一个网站 (statuscake.com),该网站以 JSON 格式发回多个项目,其中每一行都包含多个项目。我想从每一行中提取其中的两个,WebsiteName 和 TestID,这样我就可以检查 WebsiteName 是否与我感兴趣的匹配,获取 TestID 并将其传递给第二个 curl 语句以删除测试。

虽然比较复杂,但是返回的JSON本质上是这样的形式

[{"TestID": 123, "WebsiteName": "SomeSite1"}, {"TestID": 1234, "WebsiteName": "SomeSite2"}]

我似乎找不到一个神奇的 jq 命令来一次完成所有工作 - 如果有的话,我会很高兴看到它。

我有

cat $data | jq '[.[] | .WebsiteName]' 

获取一组网站名称(对于 TestIDs 来说也是一个非常相似的数组,但我认为我做了一些愚蠢的事情。数据是从 curl 返回的信息,用于获取 JSON 并且填充正常。

我希望能够将它们分配给两个数组,names 和 ids,然后在 names 中搜索相关名称的索引,从 ids 中获取 id 并将其传递给 curl。除非有更好的方法。

有什么建议吗?

最佳答案

我的 Xidel可以通过使用类似 XPath 的查询选择 JSON 来一次完成所有操作:

例如从对象数组中返回所有 WebsiteName 包含“site2”的 ID:

xidel /tmp/x.json -e '$json()[contains((.).WebsiteName, "site2")]/TestID'

或者例如下载原始 JSON,然后使用 id 发出 HTTP 请求:

xidel http://statuscake.com/your-url... -f '$json()[contains((.).WebsiteName, "site2")]/TestID!x"/your-delete-url{.}..."'

关于json - Bash 脚本使用 jq 遍历多行 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29628089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com