Android开发解析嵌套JSON获取timings下指定字符串字段值
错误原因
- 取值层级错误:
Fajr/Dhuhr/Asr等时间字段都属于timings对象的子属性,不是data数组首元素的直接属性,你之前取Fajr时没有进入timings层级,自然拿不到值。 - 类型判断错误:
timings是键值对结构的JSON对象,不是数组,调用getJSONArray("timings")会直接触发类型不匹配报错;同时JSON对象是按键名取值,不能用数字索引访问,你把字符串"Dhuhr"转成int当索引的写法完全不符合JSON对象的取值逻辑。
正确实现代码
使用org.json标准库的话,按如下写法即可正常取值:
// 逐层获取到timings对象 JSONObject timingObj = response1.getJSONArray("data") .getJSONObject(0) .getJSONObject("timings"); // 直接按键名取对应字符串值 String mfajr = timingObj.getString("Fajr"); // 结果:03:11 (EET) String mdhuhr = timingObj.getString("Dhuhr"); // 结果:11:53 (EET) String masr = timingObj.getString("Asr"); // 结果:15:29 (EET)
小提示:如果无法保证接口一定返回对应时间字段,可以用
optString("字段名", "默认兜底值")代替getString,避免字段缺失时抛出异常。
内容的提问来源于stack exchange,提问作者mohamed salem
相关产品推荐
相关产品推荐

