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

PHP中用json_decode解析JSON后无法获取经纬度的问题求助

解决JSON解析后无法获取经纬度的问题

我帮你搞定这个问题!你之所以拿不到经纬度,是因为解析后的对象里有个数字键名0,PHP里直接用$obj->0这种写法是语法错误,所以得换两种方式来处理:

方法1:将JSON解析为关联数组

使用json_decode的第二个参数true,可以直接把JSON转换成关联数组,这样就能用数组索引轻松访问值了:

$json = '{ "0": { "provider": "gps", "time": 1517235370666, "latitude": 31.501278877258, "longitude": 74.366261959076, "accuracy": 63, "speed": 2.1400001049042, "altitude": 181, "bearing": 28.125, "locationProvider": 0 } }';

// 解析为关联数组
$locationData = json_decode($json, true);

// 提取经纬度
$latitude = $locationData['0']['latitude'];
$longitude = $locationData['0']['longitude'];

// 输出结果
echo "纬度:{$latitude},经度:{$longitude}";

方法2:保留对象类型,用花括号访问数字属性

如果你想继续使用对象类型,只需要用花括号包裹数字键名来访问对应的属性即可:

$json = '{ "0": { "provider": "gps", "time": 1517235370666, "latitude": 31.501278877258, "longitude": 74.366261959076, "accuracy": 63, "speed": 2.1400001049042, "altitude": 181, "bearing": 28.125, "locationProvider": 0 } }';

// 解析为对象(默认行为,可不传第二个参数)
$locationObj = json_decode($json);

// 用花括号访问数字键名的属性
$gpsData = $locationObj->{'0'};

// 提取经纬度
$latitude = $gpsData->latitude;
$longitude = $gpsData->longitude;

// 输出结果
echo "纬度:{$latitude},经度:{$longitude}";

简单来说,就是PHP不允许直接用$obj->0这种语法访问数字命名的对象属性,所以要么转成数组,要么用花括号包裹键名来访问就行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:51:32