使用jq合并多个数组型JSON文件时出现拆分问题该如何解决
错误操作原因
- 第一次执行
jq -s '.[]':-s(--slurp)参数会先把所有输入的JSON文件内容读入到一个顶层数组中,此时数组的每个元素对应单个原JSON文件的内容(也就是每个元素都是一个数组)。.[]会把这些子数组逐个输出,最终生成的文件包含7个独立的JSON数组,不是单个合并数组,所以查询长度时会返回7个分别的长度值。 - 第二次执行
jq -s .:直接把7个原数组作为新数组的7个元素存储,所以新数组长度为7,没有实现数组合并。
正确合并命令
使用jq的add操作符即可把所有读入的子数组合并为单个数组:
jq -s 'add' \ ~/projects/salut/mpi/hes-mpi-api-service/mock-expectations/*.json > \ ~/projects/workarea/salut/mpi/mockserver/config/expectations.json
验证结果
执行完合并命令后,查询长度只会返回一个总长度值,等于所有原数组长度之和:
jq length ~/projects/workarea/salut/mpi/mockserver/config/expectations.json # 输出为 157,即 1+1+142+8+3+1+1 的总和
内容的提问来源于stack exchange,提问作者Jordi
相关产品推荐
相关产品推荐

