如何用jq去除JSON坐标数组中的高程值,仅保留经纬度?
使用jq批量移除JSON坐标中的高程值
首先注意你提供的原始数据格式有个小问题——合法JSON里不能直接用{ [ ... ] },正确的结构应该是外层用数组包裹,比如标准原始数据:
[ [48.2725225, 12.6538725, 595.2270812], [48.2725226, 12.6654544] ]
用jq处理这个需求一行命令就能搞定:
jq 'map(.[0:2])' input.json > output.json
命令说明
map(...):遍历外层数组里的每一组坐标子数组.[0:2]:对每个子数组做切片,只保留前两个元素(纬度、经度),不管原数组有没有第三个高程值,这个操作都能安全生效
如果需要直接修改原文件(要求jq 1.5及以上版本,同时需要安装moreutils包的sponge工具避免文件覆盖问题),可以用:
jq --indent 2 'map(.[0:2])' input.json | sponge input.json
处理后得到的结果就是你需要的格式:
[ [48.2725225, 12.6538725], [48.2725226, 12.6654544] ]
把这个命令整合到你的脚本里,就能替代手动删除操作,实现自动化对接系统API。
内容的提问来源于stack exchange,提问作者ericb
相关产品推荐
相关产品推荐

