如何使用JQ将特定格式数组元素合并为指定JSON结构?
使用JQ转换指定JSON结构的方法
问题说明
给定输入JSON数组:
[ "public-policy-routing/0", "public-policy-routing/1", "public-policy-routing/5", "public-policy-routing/7", "public-policy-routing/10" ]
需要将其转换为如下键值对结构:
{ "public-policy-routing" : [0,1,5,7,10] }
解决方案
核心JQ命令
执行以下命令即可完成转换(假设输入文件名为input.json):
jq '{"public-policy-routing": map(split("/")[1] | tonumber)}' input.json
命令拆解
map(...):遍历输入数组的每一个元素split("/"):将每个字符串按/分割为数组,例如"public-policy-routing/0"会被拆分为["public-policy-routing", "0"][1]:提取分割后数组的第二个元素(索引从0开始),即数字部分的字符串tonumber:将字符串形式的数字转换为数值类型- 最后将处理后的数组包裹在指定键名的对象中
直接测试方式
如果不需要读取文件,可通过管道直接输入测试:
echo '[ "public-policy-routing/0", "public-policy-routing/1", "public-policy-routing/5", "public-policy-routing/7", "public-policy-routing/10" ]' | jq '{"public-policy-routing": map(split("/")[1] | tonumber)}'
内容的提问来源于stack exchange,提问作者qch2012
相关产品推荐
相关产品推荐

