You need to enable JavaScript to run this app. Python 3.7如何动态为JSON的custom_fields键加前缀适配BigQuery
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 22:57:05