如何创建含动态JSON记录的DataFrame或列表?Rest-API插入需求
如何生成包含动态JSON记录的列表用于Rest-API插入?
我需要创建包含动态JSON记录的列表,后续通过Rest-API插入数据,但现有代码无法实现目标。
原代码:
data_collect = df_res.collect() for row in data_collect: v_id_person = '"' + row["Id"] + '"' i= 1 data[i] = """{ "resourceType" : "Example", "identifier" : [{ "use" : "official", { "system": "https://example/identif", "code": "CC" } ] }, "value" : """ + str(v_id_person) + """ } """ i = i + 1 display(data)
期望效果:
display(data) row[1] = {"resourceType" : "Example", "identifier" : [{ ... "value": "5412"} row[2] = {"resourceType" : "Example", "identifier" : [{ ... "value": "432"} row[3] = {"resourceType" : "Example", "identifier" : [{ ... "value": "1112"} ... row[n] = {"resourceType" : "Example", "identifier" : [{ ... "value": v_id_person}
问题分析
原代码的核心问题:
- 计数器重置:循环内每次将
i设为1,导致所有记录都覆盖data[1],无法生成多条记录 - JSON语法错误:手动拼接的JSON存在结构缺陷,比如
identifier数组内的嵌套对象缺少键名、value位置错误 - 字符串拼接风险:直接拼接JSON字符串极易出现引号不匹配、括号遗漏等问题,难以排查和维护
修正后的代码
推荐用Python字典构造合法结构,再按需转为JSON字符串(适配API要求),既保证语法正确又易于维护:
import json # 初始化空列表存储结果 data = [] data_collect = df_res.collect() for row in data_collect: # 获取Id值,无需手动加引号,字典会自动处理字符串类型 v_id_person = row["Id"] # 构造符合规范的字典结构 record = { "resourceType": "Example", "identifier": [ { "use": "official", "type": { # 补充原代码缺失的键名,修复JSON结构 "system": "https://example/identif", "code": "CC" }, "value": str(v_id_person) # 将Id转为字符串存入指定字段 } ] } # 将每条记录追加到列表 data.append(record) # 若API要求传入JSON字符串,可执行序列化 # json_data = [json.dumps(item) for item in data] display(data)
说明
- 用字典替代字符串拼接:Python字典与JSON结构天然对应,彻底避免手动拼接的语法错误
- 列表追加记录:通过
append()自动按顺序添加每条记录,无需手动维护索引 - 修复JSON结构:补充原代码缺失的
type键,确保嵌套对象符合JSON规范 - 可选序列化:如果Rest-API需要JSON字符串格式,用
json.dumps()将字典转为字符串即可
内容的提问来源于stack exchange,提问作者Gonza
相关产品推荐
相关产品推荐

