我有一个将坐标导入系统的用例。坐标以JSON格式提供给我,每个点都有纬度、经度和海拔(有时)。我使用@jq格式化json文件,并删除一切,但坐标。我已经尝试和谷歌方法循环通过数组和删除任何海拔,但没有运气。我目前正在使用vim手动删除它们并读取坐标。我想编写脚本,这样我就可以使用系统的API来完全自动化接收坐标并将其应用于系统。
TIA。
数据到达时是这样的:{[48.2725225, 12.6538725, 595.2270812], [48.2725226, 12.6654544]}
我需要像这样格式化它,不带标高:{[48.2725225, 12.6538725], [48.2725226, 12.6654544]}
我已经运行了多个数据过滤器并编写了循环来迭代数组的每个元素并删除第三个数字。
您的输入
{ [ 48.2725225, 12.6538725, 595.2270812 ], [ 48.2725226, 12.6654544 ] }
是无效的JSON。花括号{}
需要一个逗号分隔的键值对列表,中间有冒号:
。
如果你有一个数组的数组(都在方括号[]
中),像这样:
[ [ 48.2725225, 12.6538725, 595.2270812 ], [ 48.2725226, 12.6654544 ] ]
您可以在外部数组上使用map
单独处理每个内部数组。然后,该处理可以对数组进行切片,将其减少到前两个元素.[:2]
:
map(.[:2])
[ [48.2725225,12.6538725], [48.2725226,12.6654544] ]
演示但是,如果只有这样的数组流(注意缺少大括号和)与上面的外部数组相比,逗号):
[ 48.2725225, 12.6538725, 595.2270812 ] [ 48.2725226, 12.6654544 ]
你可以直接进行切片,不需要外部映射:
.[:2]
[48.2725225,12.6538725] [48.2725226,12.6654544]
演示还要注意这里提供的输出格式与输入格式(外部数组或流)匹配。当然,如果需要的话,也可以将其中一个转换为另一个(参见--slurp
选项或项迭代器.[]
)。
如果您的输入格式不是这两种格式,则必须应用其他方法将其转换为其中一种。