Python 3.7如何动态为JSON的custom_fields键加前缀适配BigQuery
动态适配BigQuery字段规则的实现代码
在现有接口拉取、JSON解析的逻辑基础上,追加对应处理即可完成自定义字段名的批量前缀拼接,全程无需硬编码枚举每个动态字段:
import json import urllib.request # 原有接口拉取逻辑 req = urllib.request.Request('https://www.test.com') resp = urllib.request.urlopen(req) resp_text = resp.read().decode('utf-8') json_response = json.loads(resp_text) # 配置自定义字段的拼接前缀,满足BigQuery命名规则 FIELD_PREFIX = "_" # 批量遍历处理每条响应数据 for record in json_response.get("response", []): # 兼容缺失custom_fields字段的异常场景 origin_custom_fields = record.get("custom_fields", {}) # 构造新的字段映射,避免迭代原字典时被修改引发报错 processed_custom_fields = { f"{FIELD_PREFIX}{field_key}": field_value for field_key, field_value in origin_custom_fields.items() } record["custom_fields"] = processed_custom_fields # 处理完成后可直接用于写入BigQuery,或序列化后回存云存储 processed_result = json.dumps(json_response, ensure_ascii=False)
方案特性
- 全动态适配:自动识别
custom_fields下的所有键,后续第三方接口新增自定义字段时无需修改代码 - 版本兼容:逻辑完全适配Python 3.7版本,无高版本专属语法
- 异常兼容:单条数据缺失
custom_fields字段时不会触发运行时报错,默认按空字典处理 - 灵活可扩展:可根据需求调整前缀规则,比如仅对数字开头的字段加前缀,修改字典推导式逻辑即可:
# 仅对数字开头的字段追加前缀的可选写法 processed_custom_fields = { f"{FIELD_PREFIX}{field_key}" if field_key[0].isdigit() else field_key: field_value for field_key, field_value in origin_custom_fields.items() }
处理后效果
完全匹配预期输出结构:所有custom_fields内的键均以下划线开头,符合BigQuery字段命名要求,不会修改顶层的id等固定字段的原有值和结构。
内容的提问来源于stack exchange,提问作者Mike Deluca
相关产品推荐
相关产品推荐

