You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jq解析JSON中rgw.main下的num_objects字段?

如何用jq提取JSON中"rgw.main"下的num_objects值?

给定如下JSON数据:

{
    "bucket": "mybucket",
    "num_shards": 11,
    "tenant": "",
    "zonegroup": "xxx-11111",
    "placement_rule": "default-placement",
    "explicit_placement": {
        "data_pool": "",
        "data_extra_pool": "",
        "index_pool": ""
    },
    "id": "234324324",
    "marker": "234324324.2",
    "index_type": "Normal",
    "owner": "store",
    "ver": "0#1196975824,1#1195439377,2#1195232380,3#1194062417,4#1195521322,5#1195488056,6#1193225866,7#1195484409,8#1195542434,9#1195529602,10#1195327401",
    "master_ver": "0#0,1#0,2#0,3#0,4#0,5#0,6#0,7#0,8#0,9#0,10#0",
    "mtime": "2022-02-18T11:16:22.620065Z",
    "creation_time": "2021-03-12T10:02:54.033355Z",
    "max_marker": "0#01196975823.2645569872.5,1#01195439376.3395178223.5,2#01195232379.3168551901.5,3#01194062416.2633030768.5,4#01195521321.2647348717.5,5#01195488055.3126383883.5,6#01193225865.2630243615.5,7#01195484408.2645677558.5,8#01195542433.2655116258.5,9#01195529601.2621773307.5,10#01195327400.2629607598.5",
    "usage": {
        "rgw.none": {
            "size": 0,
            "size_actual": 0,
            "size_utilized": 0,
            "size_kb": 0,
            "size_kb_actual": 0,
            "size_kb_utilized": 0,
            "num_objects": 230
        },
        "rgw.main": {
            "size": 120124562767,
            "size_actual": 120220463104,
            "size_utilized": 120124562767,
            "size_kb": 117309144,
            "size_kb_actual": 117402796,
            "size_kb_utilized": 117309144,
            "num_objects": 29670
        },
        "rgw.multimeta": {
            "size": 0,
            "size_actual": 0,
            "size_utilized": 7776,
            "size_kb": 0,
            "size_kb_actual": 0,
            "size_kb_utilized": 8,
            "num_objects": 288
        }
    },
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    }
}

尝试了以下jq表达式均未得到预期结果:

  • .usage[].num_objects:返回3个数值
  • .usage[].rgw.main.num_objects:返回null
  • .usage[].rgw:返回null

问题根源

你误解了jq中对象遍历的语法,以及带特殊字符键名的访问规则:

  1. .usage[]是遍历usage下的所有直接子对象(即rgw.none、rgw.main、rgw.multimeta),所以.usage[].num_objects会取出这三个对象各自的num_objects值。
  2. rgw.main本身是usage的一个直接键名,不是某个子对象下rgw属性里的main子属性。你写的.usage[].rgw.main是在遍历每个子对象后,试图查找子对象里的rgw属性,但这些子对象根本没有rgw键,所以返回null。

正确的jq表达式

因为键名包含小数点,不能直接用.链式访问(会被解析成嵌套结构),可以用以下两种方式之一:

  • 用引号包裹键名:.usage."rgw.main".num_objects
  • 用方括号包裹键名:.usage["rgw.main"].num_objects

执行任意一个表达式,都会返回目标值:29670

内容的提问来源于stack exchange,提问作者Badb0y

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:42:56