【发布时间】:2020-08-27 06:22:00
【问题描述】:
我需要获取 JSONObject 中的最后一个元素,以检索我的代码为的对象:
val jsonObjectRequest = JsonObjectRequest(Request.Method.GET, url, null,
Response.Listener { response ->
Log.i("response", "Response: %s".format(response.toString()))
var jsona: JSONObject = response.getJSONObject("daily")
},
Response.ErrorListener { error ->
Log.i("error", "Error: %s".format(error.toString()))
}
)
所以我使用jsona 变量获取每日价值
{"1582934400000":12450,"1583020800000":12639,"1583107200000":12439,"1583193600000":12348,"1583280000000":12278,"1583366400000":12322,"1583452800000":12435}
是否有一种智能的方法来解析这些数据以找到值 ("1583452800000":12435) 或更优选的是 12435?
似乎我只能通过知道字符串来访问对象内的数据,但字符串应该会改变,我只需要最后一个数据点。
获取具有最大键的元素(也是最后一个数据点):
var top: Long = 0
for (key in jsona.keys()){
if (key.toLong() > top) {
top = key.toLong()
}
}
然后访问它
jsona.get(top.toString())
只是希望有一个更有效的解决方案。
【问题讨论】:
-
依赖 JSON 对象中的属性顺序是有争议的(例如,参见stackoverflow.com/q/30076219/4636715)。那么,你有比位置最后更好的逻辑吗?像具有最低/最高数值的键?
-
是的,它总是具有最高值的键。
-
如果您/API 团队正在构建这个 JSON,那么您应该创建元素数组。所以你可以很容易地得到最后一个元素。