我有这个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
我错过了什么?
1条答案
按热度按时间klh5stk11#
多个问题:
usage
不是一个数组,而是一个对象,因此需要使用.usage
导航,而不是.usage[]
。.usage[]
将迭代对象的所有值,丢失键。"rgw.main"
,而不是"rgw"."main"
。换句话说,您的对象结构是{ "rgw.main": 42 }
而不是{ "rgw": { "main": 42 } }
。如果您的密钥包含jq专用的字符,则必须使用."rgw.main"
或.["rgw.main"]
或
输出: