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

Python中如何将多行二进制JSON数据转换为JSON对象

解决多行独立JSON对象的解析问题

问题原因

  1. json.loads()仅能解析单个JSON实体(对象或数组),你的输入是多行独立的JSON对象,并非合法的单一JSON结构,因此触发JSONDecodeError: Extra data。
  2. 原始数据中第二个JSON对象存在语法错误:name"缺少前引号,应为"name",这也会导致解析失败。

解决方法

将每行独立的JSON对象逐个解析,收集为列表后可转为合法的JSON数组,步骤如下:

  1. 把字节数据解码为字符串,按行分割并过滤空行;
  2. 修复行内的JSON语法错误(如果存在);
  3. 逐行解析每个JSON对象,存入列表;
  4. 可选:将列表转为格式化的JSON数组字符串。

完整代码示例

import json

# 原始字节数据
content = b'{"id": "1", "name": " value1"}\n{"id":"2", name": "value2"}\n{"id":"3", "name": "value3"}\n'

# 解码为字符串并处理行
raw_str = content.decode('utf-8')
json_lines = [line.strip() for line in raw_str.splitlines() if line.strip()]

parsed_data = []
for line in json_lines:
    # 修复语法错误:补全name字段的前引号
    corrected_line = line.replace('name":', '"name":')
    try:
        obj = json.loads(corrected_line)
        parsed_data.append(obj)
    except json.JSONDecodeError as err:
        print(f"解析失败: {line} | 错误: {err}")

# 输出格式化后的JSON数组
print(json.dumps(parsed_data, indent=2))

运行结果

[
  {
    "id": "1",
    "name": " value1"
  },
  {
    "id": "2",
    "name": "value2"
  },
  {
    "id": "3",
    "name": "value3"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:05:24