如何用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
相关产品推荐
相关产品推荐

