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

如何用Python将Google Admin SDK返回的参数列表转换为属性对象

解决方案

首先注意原始返回数据里的参数字段拼写是paramaters(比标准拼写多了一个字母a),处理时需要和你接口实际返回的字段名对齐。

核心转换逻辑

通过字典推导式即可完成参数列表到键值对的转换,同时自动匹配对应的数据类型,代码符合Python风格,且时间复杂度为O(n),执行效率高:

def transform_event(raw_event):
    # 提取基础字段
    transformed = {
        "type": raw_event["type"],
        "event": raw_event["event"],
        "parameters": {}
    }
    # 转换参数列表为键值对
    transformed["parameters"] = {
        param["name"]: (
            int(param["intValue"]) if "intValue" in param
            else param["boolValue"] if "boolValue" in param
            else param["value"]
        )
        for param in raw_event["paramaters"]
    }
    return transformed

批量处理示例

如果要一次性处理接口返回的所有事件,直接搭配列表推导式即可:

# raw_response为Activities.list()返回的原始响应数据
processed_events = [transform_event(event) for event in raw_response["events"]]

效果验证

用你提供的示例数据测试,输出完全符合预期结构:

sample_raw_event = {
    "type": "call",
    "event": "call_ended",
    "paramaters": [
        {
            "name": "network_estimated_upload_kbps_mean",
            "intValue": "10"
        },
        {
            "name": "meeting_code",
            "value": "ABCDEFGH"
        },
        {
            "name": "is_external",
            "boolValue": True
        }
    ]
}

print(transform_event(sample_raw_event))
# 输出结果:
# {
#     'type': 'call',
#     'event': 'call_ended',
#     'parameters': {
#         'network_estimated_upload_kbps_mean': 10,
#         'meeting_code': 'ABCDEFGH',
#         'is_external': True
#     }
# }

后续扩展

如果后续Google API新增了其他数据类型返回(比如floatValue),只需要在三元判断的对应位置新增分支即可,维护成本很低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:45:03