Python 为什么会出现json.decoder.jsondeCoderror错误?
我正在尝试使用配置Python日志模块 然而,我的JSON文件似乎已损坏,即使它作为Python dict使用,Python 为什么会出现json.decoder.jsondeCoderror错误?,python,json,logging,Python,Json,Logging,我正在尝试使用配置Python日志模块 然而,我的JSON文件似乎已损坏,即使它作为Python dict使用,false更改为false,因此我认为这不是语法错误 我的密码是: import json with open('logging_config.json') as f: d = json.load(f) 我的logging_config.json文件是: { "version": 1, "disable_existing_loggers": false, "fo
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.jsondecoderror:需要用双引号括起来的属性名:第8行第3列(char 156)
是什么导致JSON解码器失败
提前感谢您的帮助。您有多个多余的逗号,这将破坏JSON反序列化 这是您的原始JSON,每个多余的逗号都被指出:
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"standard": {
"format": "[%(levelname)s] %(name)s: %(message)s"
}, # <--- extraneous comma
},
"handlers": {
"default": {
"level": "DEBUG",
"formatter": "standard",
"class": "logging.StreamHandler", # <--- extraneous comma
}, # <--- extraneous comma
},
"loggers": {
"": {
"handlers": ["default"],
"level": "INFO",
"propagate": true
},
"myfunc": {
"handlers": ["default"],
"level": "DEBUG",
"propagate": false
}, # <--- extraneous comma
}
}
您有多个无关的逗号,这将破坏JSON反序列化 这是您的原始JSON,每个多余的逗号都被指出:
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"standard": {
"format": "[%(levelname)s] %(name)s: %(message)s"
}, # <--- extraneous comma
},
"handlers": {
"default": {
"level": "DEBUG",
"formatter": "standard",
"class": "logging.StreamHandler", # <--- extraneous comma
}, # <--- extraneous comma
},
"loggers": {
"": {
"handlers": ["default"],
"level": "INFO",
"propagate": true
},
"myfunc": {
"handlers": ["default"],
"level": "DEBUG",
"propagate": false
}, # <--- extraneous comma
}
}
这是因为JSON无效。这一个是有效的。 我从JSON中删除了额外的逗号。 您可以使用任何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无效。这一个是有效的。 我从JSON中删除了额外的逗号。 您可以使用任何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中有一些多余的逗号
您可以将JSON馈送到;它倾向于提供更多有用的帮助消息。正如其他人已经回答的那样,JSON中有一些多余的逗号
您可以将JSON馈送到;它倾向于提供更多有用的帮助消息。JSON解析器希望每个键都有特定类型的值。字符串是一个可接受的值,整数是另一个可接受的值。您试图插入布尔值,但布尔值的大小写之间存在差异。只有一个是有效的布尔值。这里有一些@ajoseps不是问题所在。问题是您有一个无关的逗号,因此JSON需要一个键。这个JSON是如何生成的?它当然不是由python
json
module实现的,它曾经是我手动转换的python dict。Python不需要额外的逗号,但json不需要。json解析器希望每个键都有特定类型的值。字符串是一个可接受的值,整数是另一个可接受的值。您试图插入布尔值,但布尔值的大小写之间存在差异。只有一个是有效的布尔值。这里有一些@ajoseps不是问题所在。问题是您有一个无关的逗号,因此JSON需要一个键。这个JSON是如何生成的?它当然不是由pythonjson
module实现的,它曾经是我手动转换的python dict。Python原谅了额外的逗号,但是json没有,Python原谅了这些额外的逗号。在将Python转换为json时,我错过了它们。谢谢,Python原谅了这些额外的逗号。在将Python转换为json时,我错过了它们。谢谢