从URL上的JSON文件中检索最后一个输出

时间:2017-12-11 12:53:06

标签: json

我有温度&湿度监测系统(Watchdog v3.3)将最近三个月的数据转储到IP-address/log.json

我可以下载整个文件:

 wget 'http://IP-address/log.json' log.json

将文件log.json保存在我所在的目录中。

在那里,我可以用以下内容来表达最新价值:

cat log.json | jq. '.data[.data | length -1]'

为完整起见,JSON文件如下所示: enter image description here

数据存储在data中,每分钟都有一个新条目。

-

该文件为3.3 MB,因为它正在下载三个月的数据。理想情况下,我只需要下载最新版本,然后将其附加到计算机上的文件中。
如何下载在线JSON文件的最新条目?

(最后我会在Linux上将它与crontabs结合使用,以便经常查询URL。

1 个答案:

答案 0 :(得分:1)

简短的回答是,你不能,我没有想到。您可以在该URL请求资源并下载它,也可以不提出请求。

这是因为在请求完成并且您已经获取了所有数据之前,没有办法解析它并且了解哪个位是"最后一个"条目。如果没有先通过HTTP完全下载它,您的计算机将无法读取远程服务器上的内容(实际上每次发生的情况都会发生这种情况"查看"网页 - 实际上它已下载到您的网站上机器并显示在您的浏览器中)。并且它不能尝试仅下载文档的一部分,因为在这种情况下,部分下载将包含无效和不完整的JSON,它将无法理解。

解决方案是让服务器公开一种方法,通过该方法可以请求您希望看到的日志部分,但是从您所说的内容看起来它只是为您提供访问权限到静态文件(虽然经常更新),而不是运行某些代码来查询数据的端点。也许你正在使用的产品确实通过另一个API调用提供了这种东西?

说完所有3.3MB并不是当今世界的大量数据(除非你有一个非常慢或便宜的互联网连接 - 但听起来你并不是通过移动设备做到这一点设备,更可能有数据上限或速度问题)。请考虑更新此信息的频率。是否值得去尝试请求它的片段?或者,您是否可以满足于过度编写您定期获得的内容 - 但不是太常规 - 间隔?