json - 从 JSON 中解析变量,然后使用 curl 的变量在几个 url 上循环
问题描述
我是 jq 的新手。我的业务问题如下:我有几个 GPS 位置地址存储在几个 JSON 中。JSON 格式如下:
{
"Data": [{
"Date": "2018-06-19T06:02:12+02:00",
"Latitude": 46.54225,
"Longitude": 17.13874,
"Type": "GPS",
"Speed(mph)": 0,
"Speed(km/h)": 0,
"Direction": null,
"Altitude(ft)": 406,
"Altitude(m)": 124,
"Accuracy": 50
},
{
"Date": "2018-06-19T06:59:49+02:00",
"Latitude": 46.53973,
"Longitude": 17.06964,
"Type": "GPS",
"Speed(mph)": 1,
"Speed(km/h)": 2,
"Direction": 208,
"Altitude(ft)": 377,
"Altitude(m)": 115,
"Accuracy": 10
}]
}
我想对纬度和经度值进行循环,将它们一个一个地存储在两个变量中,并使用这些变量,我想使用每个长纬度对的 shell 脚本调用 Google 的反向地理编码休息 API: https:/ /maps.googleapis.com/maps/api/geocode/json?latlng=[VARIABLE1],[VARIABLE2]&key=APIKEYHERE
在另一个 Stackoverflow 问题中,有一个类似的问题。由于这个问题,我尝试了这样的事情,但显然变量无法正常工作:
"error_message" : "Invalid request. Invalid 'latlng' parameter.",
"results" : [],
"status" : "INVALID_REQUEST"
代码:
jq -rc '.Latitude + " " +.Longitude' /usr/location/archive/location_1806181400.json |
while read -r Latitude Longitude; do
curl https://maps.googleapis.com/maps/api/geocode/json?latlng=$Latitude,$Longitude&key=APIKEYHERE
done
解决方案
你可以试试:
jq -r '.Data[] | "\(.Latitude) \(.Longitude)"' /usr/location/archive/location_1806181400.json | while read l g; do
curl "https://maps.googleapis.com/maps/api/geocode/json?latlng=${l},${g}&key=APIKEYHERE";
done
这与您的几乎相同,除了jq
脚本和命令的引用curl
。
推荐阅读
- typo3 - TYPO3:如何结合使用 disablePrependAtCopy 和 allowLanguageSynchronization?
- javascript - await 如何在异步函数中工作?
- python - 更新文件中的 dict
- asp.net-web-api - Web API 另存为 PDF
- postgresql - 不同的时区输出错误的值
- prolog - 已达到 Prolog 递归练习堆栈限制
- python - AttributeError:“顺序”对象没有属性“total_loss”
- velo - 集合参考已损坏
- python - 从通信中拆分输出
- c# - c#中使用扩展方法的单链表