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

Python3中json.loads处理空字符串如何避免解码错误并返回默认值?

解决Python中json.loads()处理空字符串的问题

好问题!确实,json.loads()本身没办法直接处理空字符串——空字符串不属于合法的JSON格式(合法JSON至少得是{}、[]、null这类结构),所以直接用它解析空内容肯定会抛出JSONDecodeError。不过完全可以自己封装一个简单的工具函数,轻松实现“解析失败/内容为空时返回默认值”的需求,不用提前检查文件大小或者内容长度。

封装一个安全的JSON解析函数

我通常会写这样一个函数,用try-except捕获异常,同时处理空字符串/空白内容的情况:

import json

def safe_json_loads(raw_str, default=None):
    # 先处理纯空白的情况(比如文件里只有空格、换行)
    if not raw_str.strip():
        return default
    try:
        return json.loads(raw_str)
    except json.JSONDecodeError:
        # 解析失败时也返回默认值(可选,根据你的需求调整)
        return default

结合你的文件读取场景使用

针对你读取文件后解析的场景,直接用这个函数替换原生的json.loads()就行:

with open('your_file.json', 'r', encoding='utf-8') as f:
    file_content = f.read()

# 比如默认返回空字典
parsed_data = safe_json_loads(file_content, default={})
# 或者默认返回空列表/None
# parsed_data = safe_json_loads(file_content, default=[])
# parsed_data = safe_json_loads(file_content, default=None)

这样不管文件是空的、只有空白字符,还是内容是无效JSON,都能优雅地返回你指定的默认值,完全不用额外做前置检查。

补充说明

如果你只需要处理严格空字符串的情况(比如文件绝对是空的,不会有空白字符),可以简化函数,但上面的版本更通用——毕竟实际场景中偶尔会遇到文件里只有换行/空格的情况,提前处理能避免不必要的异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:15:58