如何使用jq根据值排除含deprecated:true的API方法键?
过滤已弃用API方法的jq命令调整
原始API定义JSON
{ "paths": { "/api/A": { "get": { "summary": "lorem ipsum", "parameters": [ { "name": "Guid", "description": "Guid" } ] }, "put": { "summary": "Adds or updates an item", "parameters": [ { "name": "lorem ipsum", "description": "lorem ipsum" } ], "deprecated": true } } } }
原始命令的问题
执行命令 jq ".paths | map_values(keys)" json 会返回包含所有方法的列表,包括标记为deprecated: true的put方法:
{ "/api/A": [ "get", "put" ] }
调整后的jq命令
要只保留未被弃用的API方法,使用以下命令:
jq ".paths | map_values(to_entries | map(select(.value.deprecated != true)) | .[].key)" json
命令逻辑说明
to_entries:将每个路径下的方法对象转换为键值对数组,方便后续过滤map(select(.value.deprecated != true)):筛选出deprecated属性不为true的方法条目.[].key:提取筛选后条目的方法名称
执行结果
运行调整后的命令,会得到仅包含未弃用方法的结果:
{ "/api/A": [ "get" ] }
内容的提问来源于stack exchange,提问作者RJ Vega
相关产品推荐
相关产品推荐

