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

PHP解析JSON时Ticket字段不显示但Measures正常的问题求助

问题根因

字段访问路径写错了。你的JSON结构里,TicketNo、Creation、FailureDescription 三个字段都嵌套在$myItem的子对象Ticket下,不是$myItem的直接属性:

  • 原代码写$myItem->TicketNo,是在顶层对象上找不存在的属性,自然返回空值
  • 你之前尝试写$myItem->Ticket但没有继续访问它下面的子字段,当然拿不到具体值
  • Measures部分能正常显示,是因为它本身就是$myItem的直接同级属性,访问路径写对了

这个问题和Ticket字段是不是数组没有任何关系。

修复方案

补全Ticket相关字段的访问层级即可,两种常用写法都可以:

对象模式(默认json_decode返回对象)

$file = file_get_contents($remote_url, false, $context);
$myData = json_decode($file);

foreach($myData as $myItem) {
   // 先取Ticket子对象,再访问下属字段
   $ticket = $myItem->Ticket;
   echo "<tr><td>{$ticket->TicketNo}</td><td>CLOSED</td><td>{$ticket->Creation}</td><td>{$ticket->FailureDescription}</td></tr>";
   echo "<tr><th>Start</th><th>Measure</th></tr>";

   foreach ($myItem->Measures as $wm) {
      echo "<tr><td>{$wm->StartTime}</td><td>{$wm->Description}</td></tr>";
   }
}

提示:双引号中解析对象属性时,建议用{}把变量包裹起来,避免PHP解析规则导致的异常。

关联数组模式(json_decode第二参数传true)

如果习惯数组访问语法,确保层级路径正确即可:

$file = file_get_contents($remote_url, false, $context);
// 第二参数传true,将JSON解析为关联数组
$myData = json_decode($file, true);

foreach($myData as $myItem) {
   // 数组层级:先取$myItem['Ticket']子数组,再取下属字段
   $ticket = $myItem['Ticket'];
   echo "<tr><td>{$ticket['TicketNo']}</td><td>CLOSED</td><td>{$ticket['Creation']}</td><td>{$ticket['FailureDescription']}</td></tr>";
   echo "<tr><th>Start</th><th>Measure</th></tr>";

   foreach ($myItem['Measures'] as $wm) {
      echo "<tr><td>{$wm['StartTime']}</td><td>{$wm['Description']}</td></tr>";
   }
}
排查技巧

既然var_dump($myData)能看到全量数据,后续遇到这类属性访问为空的问题,可以直接在循环内打印单条$myItem的结构,对照输出的嵌套关系写访问路径,能快速定位层级错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:51:27