如何在不指定键值的情况下获取 JSON 对象的最后一个元素?
Posted
技术标签:
【中文标题】如何在不指定键值的情况下获取 JSON 对象的最后一个元素?【英文标题】:How can I get last element of JSON Object without specifying key value? 【发布时间】:2021-11-13 07:39:48 【问题描述】:这是来自该 API 的 covid 19 的数据:https://data.covid19india.org/v4/min/timeseries.min.json 我想到达 JAVA / android Studio 中 "dates" JSON 对象的最后一个元素/或 "2020-03-06"。
如果有人可以建议我如何在不将其转换或更改为 JSON 数组的情况下到达此 JSON 对象的最后一个元素。
"TT":
"dates":
"2020-01-30":
"delta":
"confirmed": 1
,
"delta7":
"confirmed": 1
,
"total":
"confirmed": 1
,
"2020-02-02":
"delta":
"confirmed": 1
,
"delta7":
"confirmed": 2
,
"total":
"confirmed": 2
,
"2020-03-03":
"delta":
"confirmed": 1
,
"delta7":
"confirmed": 3
,
"total":
"confirmed": 6,
"recovered": 3
,
"2020-03-04":
"delta":
"confirmed": 22
,
"delta7":
"confirmed": 25
,
"total":
"confirmed": 28,
"recovered": 3
,
"2020-03-05":
"delta":
"confirmed": 2
,
"delta7":
"confirmed": 27
,
"total":
"confirmed": 30,
"recovered": 3
,
"2020-03-06":
"delta":
"confirmed": 1
,
"delta7":
"confirmed": 28
,
"total":
"confirmed": 31,
"recovered": 3
【问题讨论】:
如果知道大小,则将 JSON 对象转换为 Array,然后返回最后一个元素。 【参考方案1】:首先获取日期的 JSONObject,然后通过在其名称(键)上获取 JSONArray 来获取最后一项,因为您现在拥有其键数组,您可以获取存在于 arr.length()-1
的最后一项。
像这样:
JSONObject dates = jsonObject.getJSONObject("TT").getJSONObject("dates");
JSONArray arr = dates.names();
String lastDate = arr2.getString(arr.length()-1);
从那里你可以做任何事情,因为你有需要的钥匙。
顺便说一句,您的 JSON 缺少一些括号,这让我困扰了一段时间
"TT":
"dates":
"2020-01-30":
"delta":
"confirmed": 1
,
"delta7":
"confirmed": 1
,
"total":
"confirmed": 1
,
"2020-02-02":
"delta":
"confirmed": 1
,
"delta7":
"confirmed": 2
,
"total":
"confirmed": 2
,
"2020-03-03":
"delta":
"confirmed": 1
,
"delta7":
"confirmed": 3
,
"total":
"confirmed": 6,
"recovered": 3
,
"2020-03-04":
"delta":
"confirmed": 22
,
"delta7":
"confirmed": 25
,
"total":
"confirmed": 28,
"recovered": 3
,
"2020-03-05":
"delta":
"confirmed": 2
,
"delta7":
"confirmed": 27
,
"total":
"confirmed": 30,
"recovered": 3
,
"2020-03-06":
"delta":
"confirmed": 1
,
"delta7":
"confirmed": 28
,
"total":
"confirmed": 31,
"recovered": 3
【讨论】:
【参考方案2】:我找到了解决这个问题的新方法,或者访问最后日期,查看它或者可以应用到你的代码中,它适用于我的项目,也适用于你的项目。
JSONObject tempData = response.getJSONObject("TT").getJSONObject("dates");
JSONObject lastElement = tempData.getJSONObject(String.valueOf(tempData.names().get(tempData.length() - 1)));
String date = key1.substring(8,10)+ "/" + key1.substring(5,7) + "/" + key1.substring(0,4);
【讨论】:
以上是关于如何在不指定键值的情况下获取 JSON 对象的最后一个元素?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不获取空对象的情况下进行 JSON.stringify 和 JSON.parse?
Postgresql:如何在不使用中间 hstore 的情况下将键值表转换为 json
如何在不丢失值的情况下将 json 解析为 pandas 数据框? [复制]