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

升级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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:03:25