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

Basic jq usage. How to get nested value

这一定非常简单,但手册页对我来说毫无意义。 curl example.com/json 给我

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

我想提取 disk_total 的值 XXXXXXXXXX。这样做的语法是什么?

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

jq '.stats."storage_server.disk_total"'

假设 XXXXXXXXXX 是您真实 JSON 中的有效 JSON 号码。

  1. 要了解如何构造 jq 查询,查看 tutorial and manual than the "man" page. There's also a FAQ 更有用。
  2. 内键名有句号,不能用.keyname shorthand。所以你可以写:

   .stats["storage_server.disk_total"] 

或者如果您的 jq 允许:

   .stats."storage_server.disk_total" 

这些都是缩写:

   .stats | .["storage_server.disk_total"] 

要通过键深入嵌套值:

$ jq '.. |."storage_server.disk_total"? | select(. != null)'

.. is a shortcut for the zero-argument recurse -- XPath // 运算符的模拟。