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

PHP如何访问键名包含句点(.)的JSON字段值

PHP访问JSON中带.键名的实现方法

带.的键名在JSON解析后属于完整的字符串键,不存在特殊语法,之前访问失败基本是误用对象链式操作、错误拆分键名导致的,按以下步骤处理即可:

第一步:正确解码JSON

推荐将JSON解码为关联数组,比stdClass对象处理特殊字符键名的容错率更高,解码时开启异常抛出方便排查格式错误:

// 此处替换为你实际接收到的树莓派上传的JSON原始字符串
$rawJson = '{
  "result": [
    {
      "telemetry": {
        "actual.remaining.mileage": 26.81,
        "position": {
          "altitude": 0,
          "direction": 0,
          "latitude": 34.799687,
          "longitude": 7.478863,
          "satellites": 0,
          "speed": 0
        },
        "position.altitude": 0,
        "vehicle.mileage": 624.071
      },
      "connected": true
    }
  ]
}';

// 第二个参数传true=输出关联数组,JSON_THROW_ON_ERROR=格式错误时直接抛异常方便排查
$data = json_decode($rawJson, true, 512, JSON_THROW_ON_ERROR);

第二步:按层级访问对应字段

注意result是索引数组,第一条数据下标为0;带.的键要把整个含点的字符串作为完整键名,不要按点拆分层级:

// 车辆连接状态
$connected = $data['result'][0]['connected']; // bool(true)

// 剩余续航(带点的完整键名,不要拆分)
$remainingRange = $data['result'][0]['telemetry']['actual.remaining.mileage']; // float(26.81)

// 总行驶里程(带点的完整键名)
$totalMileage = $data['result'][0]['telemetry']['vehicle.mileage']; // float(624.071)

// 嵌套position结构下的定位数据(这里position是真实的嵌套层级,不是键名带点)
$lat = $data['result'][0]['telemetry']['position']['latitude']; // float(34.799687)
$lng = $data['result'][0]['telemetry']['position']['longitude']; // float(7.478863)
$currentSpeed = $data['result'][0]['telemetry']['position']['speed']; // int(0)
$satCount = $data['result'][0]['telemetry']['position']['satellites']; // int(0)

// 平铺存储的海拔字段(键名带点)
$flatAltitude = $data['result'][0]['telemetry']['position.altitude']; // int(0)

常见踩坑说明

  1. 不要用纯对象链式写法直接访问带点的键:类似$data->result[0]->telemetry->actual.remaining.mileage的写法会被PHP解析为多层嵌套属性,必然报属性不存在错误。如果坚持用对象模式解码(json_decode第二个参数传false),带点的键需要用大括号包裹键名访问,写法为$data->result[0]->telemetry->{'actual.remaining.mileage'},日常开发更推荐关联数组写法,更简洁不易出错。
  2. 解码后建议先打印$data结构确认解析结果:如果JSON格式存在传输乱码、截断问题,json_decode会返回null,可通过json_last_error_msg()排查具体错误原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:15:41