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

如何读取含两个连续无分隔符字典的JSON文件(Python)

解决无分隔符多JSON对象的解析问题

你遇到的问题是因为JSON解析器默认只能处理单个JSON值,但你的文件里是两个顶级字典直接拼接在一起,没有分隔符,所以解析到第一个字典结束后,剩余内容会触发报错。下面提供两种可行的解决方法:

方法一:使用json.JSONDecoder.raw_decode(推荐)

这个方法可以从字符串的指定位置开始解析单个JSON对象,同时返回解析结束的位置,非常适合处理这种拼接的多JSON场景,还能避免字符串中包含}{导致的错误分割问题。

代码示例:

import json

result = []
with open('data.json', 'r', encoding='utf-8') as f:
    content = f.read()
    decoder = json.JSONDecoder()
    current_pos = 0
    content_length = len(content)
    
    while current_pos < content_length:
        # 跳过可能的空白字符,定位下一个JSON对象的起始
        current_pos = content.find('{', current_pos)
        if current_pos == -1:
            break
        obj, current_pos = decoder.raw_decode(content, current_pos)
        result.append(obj)

# 现在result里就是两个独立的字典对象
print(len(result))  # 输出2

方法二:手动分割字符串(简单但有局限性)

如果能确保你的JSON内容里没有字符串值包含}{,可以直接把拼接的}{替换为}\n{,再逐段解析:

代码示例:

import json

result = []
with open('data.json', 'r', encoding='utf-8') as f:
    content = f.read().replace('}{', '}\n{')
    for line in content.splitlines():
        line = line.strip()
        if line:
            result.append(json.loads(line))

注意:如果JSON的字符串字段里出现}{(比如某个data数组里的字符串是"abc}{def"),这个方法会错误分割JSON,导致解析失败,所以优先用方法一。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:37:13