升级Microsoft Graph v2后,如何将Event对象转换为简易数据数组
解决Microsoft Graph v2 Event对象数据量过大的转换方案
升级到Microsoft Graph SDK v2后,直接输出Microsoft\Graph\Generated\Models\Event对象会携带大量冗余数据,哪怕只输出少量对象都可能导致浏览器崩溃或日志文件体积异常。可以通过自定义转换函数,把Event对象转成仅包含所需属性的简易数组,示例实现如下:
转换函数实现
function simplifyEvent(\Microsoft\Graph\Generated\Models\Event $event): array { // 处理参会者列表 $attendees = []; if ($event->getAttendees()) { foreach ($event->getAttendees() as $attendee) { $attendees[] = [ 'e-mail' => $attendee->getEmailAddress()?->getAddress(), 'name' => $attendee->getEmailAddress()?->getName(), 'status' => $attendee->getStatus()?->getResponse() ]; } } // 转换开始时间为指定格式 $startDateTime = null; if ($event->getStart()?->getDateTime()) { $startDateTime = \DateTimeImmutable::createFromFormat( DATE_ATOM, $event->getStart()->getDateTime() )->format('Y-m-d H:i'); } return [ 'subject' => $event->getSubject(), 'start' => $startDateTime, 'attendees' => $attendees ]; }
使用示例
假设你从Graph API获取到了Event对象集合,直接用array_map批量转换即可:
// $events 是从Graph获取的Event对象数组 $simplifiedEvents = array_map('simplifyEvent', $events); // 输出转换后的数组,数据量大幅缩减 var_dump($simplifiedEvents);
额外说明
- 时间格式可根据需求调整,若需要处理时区,可结合
$event->getStart()->getTimeZone()来修正DateTime对象 - 如果需要添加其他属性(比如结束时间、会议地点),直接在返回数组中补充对应属性的处理逻辑即可
- 代码中使用
?->空安全访问符,避免因对象属性为null引发报错
内容的提问来源于stack exchange,提问作者br4nnigan
相关产品推荐
相关产品推荐

