linux . separated json value parsing with jq

x6h2sr28  于 2023-05-06  发布在  Linux
关注(0)|答案(1)|浏览(167)

我有这个json,我想在“rgw.main”下运行,但由于某些原因,我不知道如何定义。

{
    "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
    }
}

我试图取出rgw.main num_objects,但是我不能只进入rgw.main。
这样尝试,但这会返回3个数值:

.usage[].num_objects

这样尝试,但结果为null:

.usage[].rgw.main.num_objects

尝试了这样做,但仍然无效:

.usage[].rgw

我错过了什么?

klh5stk1

klh5stk11#

多个问题:

  • usage不是一个数组,而是一个对象,因此需要使用.usage导航,而不是.usage[].usage[]将迭代对象的所有值,丢失键。
  • 您的密钥是"rgw.main",而不是"rgw"."main"。换句话说,您的对象结构是{ "rgw.main": 42 }而不是{ "rgw": { "main": 42 } }。如果您的密钥包含jq专用的字符,则必须使用."rgw.main".["rgw.main"]
.usage."rgw.main".num_objects

.usage["rgw.main"].num_objects

输出:

29670

相关问题