You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从含嵌套payload的JSON文件创建pandas DataFrame并解决读取报错

问题原因

两个报错均由JSON文件格式不匹配导致:

  • 你当前的JSON文件中每个JSON对象跨越多行,不符合pd.read_json(lines=True)和逐行json.loads要求的每行对应一个完整JSON对象的规则,单段读取的内容无法被解析为合法JSON
  • payload字段是转义后的嵌套JSON字符串,需要二次解析才能提取内部字段

解决方案

完整可运行代码如下:

import json
import pandas as pd

# 读取整个文件内容
with open('data.JSON', 'r', encoding='utf-8') as f:
    file_content = f.read()

# 分割多个跨行的JSON对象
raw_json_segments = [seg.strip() for seg in file_content.split('}\n{') if seg.strip()]
processed_json_list = []
for seg in raw_json_segments:
    # 补全分割时丢失的大括号
    if not seg.startswith('{'):
        seg = '{' + seg
    if not seg.endswith('}'):
        seg = seg + '}'
    processed_json_list.append(seg)

# 解析JSON并提取payload字段
payload_data = []
for json_str in processed_json_list:
    outer_json = json.loads(json_str)
    # 二次解析嵌套的payload字符串
    payload = json.loads(outer_json['event']['payload'])
    payload_data.append(payload)

# 生成目标DataFrame,自动对齐不同传感器的字段
df = pd.DataFrame(payload_data)

运行后生成的DataFrame会自动适配所有传感器类型的字段,缺失字段对应位置自动填充NaN,符合多类型传感器的数据处理需求。

可选扩展

如果需要同时保留外层event下的其他字段(如origin设备名),可以在解析时合并字段:

payload = json.loads(outer_json['event']['payload'])
# 合并外层字段到payload
payload['origin'] = outer_json['event']['origin']
payload_data.append(payload)

内容的提问来源于stack exchange,提问作者Thekingis007

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:45:03