作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须 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/
我是一名优秀的程序员,十分优秀!