【发布时间】:2017-08-22 15:57:13
【问题描述】:
我正在尝试使用 logging.config.dictConfig() 配置我的 Python 日志记录模块
但是,我的 JSON 文件似乎已损坏,即使它作为 Python 字典工作,false 更改为 False,所以我认为这不是语法错误。
我的代码说:
import json
with open('logging_config.json') as f:
d = json.load(f)
我的logging_config.json 文件是:
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"standard": {
"format": "[%(levelname)s] %(name)s: %(message)s"
},
},
"handlers": {
"default": {
"level": "DEBUG",
"formatter": "standard",
"class": "logging.StreamHandler",
},
},
"loggers": {
"": {
"handlers": ["default"],
"level": "INFO",
"propagate": true
},
"myfunc": {
"handlers": ["default"],
"level": "DEBUG",
"propagate": false
},
}
}
当我运行那个简单的程序时,我得到一个错误:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 8 column 3 (char 156)
什么可能导致 JSON 解码器失败?
提前感谢您的帮助。
【问题讨论】:
-
JSON 解析器期望每个键都有某种类型的值。字符串是一个可接受的值,整数是另一个。您正在尝试插入一个布尔值,但布尔值的大小写有所不同。只有一个是有效的布尔值。这是一些documentation
-
@ajoseps 这不是问题。问题是你有一个多余的逗号,所以 JSON 需要一个密钥。这个 JSON 是如何生成的?它肯定不是由 python
json模块 -
它曾经是我手动转换的 Python 字典。 Python 原谅了额外的逗号,但 json 没有