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

树莓派Python开发读取JSON文件报JSONDecodeError如何解决?

问题根因

你的JSON文件存在语法错误,不符合JSON标准规范:

  • main对象的最后一个属性 "day": 0 末尾多了多余的尾随逗号,JSON语法明确禁止对象/数组的最后一项后保留逗号。

你遇到的报错Expecting property name enclosed in double quotes: line 14 column 9就是解析器读到这个多余逗号后,误以为后续还会有新的属性定义,所以抛出了期望属性名的错误。

修复方法

删除JSON文件里"day": 0后面的逗号即可,修正后的JSON内容如下:

{
    "main": {
        "active": true,
        "watering": false,
        "fwatering": false,
        "ffminwatering": false,
        "humidity": 24,
        "temp": 17.6,
        "battery": 100,
        "logging": true,
        "last_watering": "27.08.2021 16:15:39",
        "l_day": 0,
        "day": 0
        }
}
额外优化建议

你现有的Python代码只捕获了文件不存在的异常,没有处理JSON解析失败的场景,如果JSON解析出错,jsondata变量不会被定义,后续调用jsondata['main']['logging']会触发NameError。可以调整代码结构,把JSON读取和解析相关的逻辑都放进try块,同时新增JSON解析异常的捕获:

import logging
import json

jsondata = None
try:
    with open('/var/www/BWSWebApp/apictx.json') as file:
        jsondata = json.load(file)
    _logging = jsondata['main']['logging']
    if _logging == True:
        _logging = '/home/pi/Desktop/BewaesserungssystemV3/data/info_log.log'
    else:
        _logging = None
except FileNotFoundError:
    print('Error: File not found (ln 35)')
except json.decoder.JSONDecodeError:
    print('Error: JSON file format invalid')
except KeyError:
    print('Error: Missing required field in JSON')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:45:03