检索URL上JSON文件的最后输出

检索URL上JSON文件的最后输出,json,Json,我有一个温度和湿度监测系统(Watchdog v3.3),它将过去三个月的数据转储到IP地址/log.json 我可以通过以下方式下载整个文件: wget 'http://IP-address/log.json' log.json 它将文件log.json保存在我所在的目录中 到达后,我可以使用以下工具获取最新值: cat log.json | jq. '.data[.data | length -1]' 为完整起见,JSON文件如下所示: 数据存储在data中,每分钟有一个新条目 --

我有一个温度和湿度监测系统(Watchdog v3.3),它将过去三个月的数据转储到
IP地址/log.json

我可以通过以下方式下载整个文件:

 wget 'http://IP-address/log.json' log.json
它将文件
log.json
保存在我所在的目录中

到达后,我可以使用以下工具获取最新值:

cat log.json | jq. '.data[.data | length -1]'
为完整起见,JSON文件如下所示:

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

--

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


(最终,我将在Linux上结合使用
crontab
,以便经常查询URL)。

简单的回答是,你不能,我不认为。您可以请求该URL上的资源并将其下载,也可以不请求

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

解决方案是让服务器公开一种方法,通过这种方法,您可以请求查看日志的哪一部分,但从您所说的来看,它似乎只是让您访问一个静态文件(尽管是一个经常更新的文件),而不是一个运行一些代码来查询数据的端点。也许您正在使用的产品确实通过另一个API调用提供了这种功能


话虽如此,在当今世界,3.3MB的数据并不多(除非你的互联网连接速度很慢或很便宜——但听起来你不是通过移动设备实现的,因为移动设备更可能存在数据上限或速度问题)。考虑一下更新这些信息的频率。是否值得不厌其烦地尝试请求它的片段?或者,您可以满足于定期(但不太定期)重写您所拥有的内容吗?

有没有办法只下载最后KB左右的数据?没有。正如我上面解释的,当您发出HTTP请求时,您会自动收到整个响应。不多也不少。解决这一问题的唯一方法是,服务器本身提供不同的HTTP端点,您可以在该端点中请求日志文件的特定逻辑部分,并将其作为不同的响应提供给您。