You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何从JSON结构正确提取lat、lng经纬度值

解析失败的核心原因

你写的取值路径和实际JSON结构不匹配,关键问题是results字段在你的测试JSON里是数组结构,不是普通的嵌套对象。
你的测试JSON中,results对应的值是用方括号包裹的列表,列表内部的每个元素才是带geometry字段的对象。你之前的代码跳过了“取数组元素”这一步,直接从results节点往下找geometry,自然拿不到对应的值,还可能触发类型不匹配的报错。

可直接运行的正确解析代码
// 解码JSON的逻辑和你原有写法保持一致
var myMap = json.decode(data.toString());

// 补上数组索引[0],逐层级匹配JSON结构
final lat = myMap['results'][0]['geometry']['location']['lat'];
final lng = myMap['results'][0]['geometry']['location']['lng'];
实用注意事项
  • 对照JSON结构梳理取值路径时,只要看到带[]的数组节点,取值时必须搭配数字索引,不能直接用对象key访问
  • 生产环境下接口返回的results数组可能为空,取值前要加判空逻辑,避免数组越界、空指针异常:

    示例判空逻辑:先判断(myMap['results'] as List).isNotEmpty,确认数组长度大于0后,再取索引0的元素做后续访问

  • 长期开发建议将这套嵌套JSON转成强类型的实体类,减少手写层级路径时的书写错误,降低排查成本

内容的提问来源于stack exchange,提问作者androidleraner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 17:45:02