如何使用jq提取JSON对象中的随机字符串名称并忽略子组件?
使用jq提取JSON指定层级的随机字符串键名
问题说明
现有结构如下的data.json文件:
{ "JSON_KEY": { "SOME_TITLE": { "RANDOM_STRING1": { "label": "value", "units": { "subunits": [ {"item1": "1", "item2": "2"}, {"item3": "3", "item4":"4"} ] } } // 包含成百上千个类似RANDOM_STRING1的随机字符串键 } } }
该文件仅含一个JSON根键,需要提取SOME_TITLE下所有随机字符串键名(如示例中的RANDOM_STRING1),忽略键下的对象与列表,要求每个键名单独一行输出。
实现命令
直接使用以下jq命令即可完成需求:
jq -r '.[] | .[] | keys[]' data.json
命令解释
.[]:获取根键(JSON_KEY)对应的对象值.[]:获取该对象下SOME_TITLE对应的对象值keys[]:提取此对象下的所有键名,逐个输出为单独行
如果需要固定层级路径、避免结构变动影响,也可以使用明确路径的写法:
jq -r '.JSON_KEY.SOME_TITLE | keys[]' data.json
内容的提问来源于stack exchange,提问作者shrykullgod
相关产品推荐
相关产品推荐

