基本jq用法。如何获取嵌套值

27

这一定非常简单,但是文档对我来说毫无意义。curl example.com/json给了我以下结果:

{
 "stats": {
  "storage_server.disk_total": XXXXXXXXXX
 },
 "counters": {}
}

我想提取disk_total的值XXXXXXXXXX。如何编写语法实现?


2
.stats[].storage_server?我觉得这个跟我的结构完全一样,可以用。 - Alex Hall
3个回答

30

20
  1. 学习构建 jq 查询,查看教程手册比阅读“man”页面更有用。此外还有一个FAQ
  2. 内部键名中有一个句点,因此无法使用.keyname简写。所以你可以这样写:
   .stats["storage_server.disk_total"] 

或者,如果你的 jq 允许的话:

   .stats."storage_server.disk_total" 

这两个都是缩写,分别代表:

   .stats | .["storage_server.disk_total"] 

1
这对于使用JSON/Python的人来说是最有意义的。 curl <cmd> | jq '.value["ref"]["service"]' - ProfessorKaos64

8

在`storage_server.disk_total`中的点需要转义,以防止它被解释为对象键分隔符。因此您可以使用:

jq '.stats."storage_server.disk_total"'

假设在您的真实JSON中XXXXXXXXXX是一个有效的JSON数字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接