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

PHP解析JSON数值数据:如何获取JSON中的speed字段?

解决JSON获取speed字段的问题

你的问题出在没注意到JSON数据的层级结构——最外层是一个以"353701094714280"为键的对象,speed字段属于这个内层对象,而不是顶层对象的直接属性,所以直接用$json->speed自然找不到对应值。

下面是两种可行的解决方法,你可以按需选择:

方法一:以对象形式访问

先把JSON字符串解码为PHP对象,先进入外层长数字键对应的子对象,再获取speed:

// 原始JSON字符串
$jsonStr = '{"353701094714280": {"dt_server": "2021-09-19 02:24:26", "dt_tracker": "2021-09-17 9:57:56", "lat": "1.059998", "lng": "104.134", "altitude": "0", "angle": "0", "speed": "0", "params": {"pump": "0", "track": "1", "bats": "1", "acc": "0", "batl": "6"}, "loc_valid": "1"}}';

// 解码为PHP对象
$jsonObj = json_decode($jsonStr);

// 访问外层键对应的子对象,再取speed(数字开头的属性需用{"键名"}形式访问)
$speed = $jsonObj->{"353701094714280"}->speed;

// 输出结果:0
echo $speed;

方法二:以关联数组形式访问

如果更习惯数组操作,可以在解码时传入第二个参数true,将JSON转为关联数组:

// 解码为关联数组
$jsonArr = json_decode($jsonStr, true);

// 逐层访问数组键获取speed
$speed = $jsonArr['353701094714280']['speed'];

// 输出结果:0
echo $speed;

如果这个长数字键是动态变化的(比如每次请求都不同),还可以用reset()直接获取顶层对象/数组的第一个子元素,不用写死键名:

// 对象方式
$innerObj = reset($jsonObj);
$speed = $innerObj->speed;

// 数组方式
$innerArr = reset($jsonArr);
$speed = $innerArr['speed'];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:43:17