使用 HTTP 请求获取最后一个 JSON 数组元素

Posted

技术标签:

【中文标题】使用 HTTP 请求获取最后一个 JSON 数组元素【英文标题】:Get last JSON array element with HTTP request 【发布时间】:2021-10-22 13:42:50 【问题描述】:

是否可以获取托管在 GitHub 上的 JSON 数组文件的最后一个/倒数第二个元素,而无需下载整个文件?

因为文件是 10 MB,所以我只需要数组的最后两个单元格,实际上每次去获取信息时,由于文件的重量,加载需要很长时间。

文件链接:https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-json/dpc-covid19-ita-regioni.json

我使用此代码检索信息:

RequestQueue queue = Volley.newRequestQueue(getApplicationContext());

    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, JSON_OLD, null, response -> 
        try
            for(int i = response.length() - 42; i < response.length() - 21; i++)
                JSONObject jsonObject = response.getJSONObject(i);
                oldRegionData.add(new RegionData(Integer.parseInt(jsonObject.getString("dimessi_guariti")),Integer.parseInt(jsonObject.getString("deceduti")), jsonObject.getString("denominazione_regione"), Integer.parseInt(jsonObject.getString("nuovi_positivi"))));
            
            getNewData(queue);
         catch (JSONException e) 
            e.printStackTrace();
        
    , error -> Log.println(Log.ERROR,"Error", "Error while performing this action"));
    queue.add(jsonArrayRequest);

【问题讨论】:

【参考方案1】:

据我所知,没有办法“跳转”到呼叫响应的末尾。

不过,我还是会这样处理:

如果数据不断变化:

以固定的时间间隔接收数据,而不是每次需要时。 获取数据并将其保存在某处(通过Object 或将您需要的文件部分缓存在临时位置)。

如果数据没有变化

在应用程序开始运行时获取数据并使用Object 保留所需的数据

【讨论】:

以上是关于使用 HTTP 请求获取最后一个 JSON 数组元素的主要内容,如果未能解决你的问题,请参考以下文章

在 TypeScript 中获取 JSON 数组的最后一个元素

如何在node.js服务器流式http请求中处理JSON流响应数组

前端向后端传一个json数组对象

nodejs 怎么获取post请求的json数据

在 http-equiv 元标记内将内容类型设置为 utf-8 时获取重复的 http 请求

从 json 数组字符串中获取数据到字符串变量