如何将流式数据转换为指定结构的JSON文件并写入文件系统?
解决流式数据转指定JSON结构的问题
你的问题核心在于构造内层字典时多嵌套了一层"vsigns"键,咱们只需要把timestamp和vsigns子字典里的键值对平级合并,就能得到你想要的结构。
修正后的代码
for k in streaming: id_val = k[1] # 把变量名改成id_val,避免和内层循环变量重名,更规范 timestamp = k[2] vsigns = k[3] vlist = [] for vs_type, vs_data in vsigns.items(): # 直接合并timestamp和vs_data的所有键值对,去掉多余的vsigns嵌套 vs_detail = {"timestamp": timestamp, **vs_data} vdict = {"id": id_val, vs_type: vs_detail} vlist.append(vdict) print(vlist)
关键修改点说明
- 变量名优化:把原代码的
id改成id_val,避免和内层循环的k(这里换成了更具可读性的vs_type)重名,防止变量覆盖问题。 - 字典合并逻辑:用
{**{"timestamp": timestamp}, **vs_data}的字典解包语法,把时间戳和体征数据的键值对直接合并成一个字典,不再嵌套"vsigns"层。 - 结构对齐:合并后的字典直接作为
ECG/HR/NIBP对应的值,和id一起组成列表中的每个对象,完全匹配你期望的JSON结构。
预期输出效果
运行修正后的代码,会生成你想要的JSON结构:
[{ "id": "1", "ECG": { "timestamp": 1652304692, "VPB_FREQ": "0", "STI": "+0.00" } }, { "id": "1", "HR": { "timestamp": 1652304692, "HR_EKG": "87", "HR_PPG_1": "87", "HR_PULSED": "87" } }, { "id": "1", "NIBP": { "timestamp": 1652304692, "NIBPS": "119", "NIBPD": "88", "NIBPM": "95" } }]
如果需要将结果写入文件,可以借助Python的json模块:
import json # 假设vlist是生成好的结果列表 with open("vital_signs.json", "w", encoding="utf-8") as f: json.dump(vlist, f, indent=2, ensure_ascii=False)
内容的提问来源于stack exchange,提问作者NAB0815
相关产品推荐
相关产品推荐

