Python的json.load行为

Python的json.load行为,python,Python,我试图从目录中的日志文件中提取特定值。 现在日志文件包含JSON数据,我想提取id字段的值 JSON数据如下所示 { id: "123", name: "foo" description: "bar baz" } def test_load_json_directly(self): with open('source_data/testing123.json') as log_file: data = json.load(log_file)

我试图从目录中的日志文件中提取特定值。 现在日志文件包含JSON数据,我想提取id字段的值

JSON数据如下所示

{
    id: "123",
    name: "foo"
    description: "bar baz" 
}
def test_load_json_directly(self):
    with open('source_data/testing123.json') as log_file:
        data = json.load(log_file)
        print data

def test_load_json_from_iteration(self, dir_path, file_ext):
    path_name = os.path.join(dir_path, '*.' + file_ext)

    files = glob.glob(path_name)
    for filename in files:
    with open(filename) as log_file:
        data = json.load(log_file)
        print data
代码如下所示

{
    id: "123",
    name: "foo"
    description: "bar baz" 
}
def test_load_json_directly(self):
    with open('source_data/testing123.json') as log_file:
        data = json.load(log_file)
        print data

def test_load_json_from_iteration(self, dir_path, file_ext):
    path_name = os.path.join(dir_path, '*.' + file_ext)

    files = glob.glob(path_name)
    for filename in files:
    with open(filename) as log_file:
        data = json.load(log_file)
        print data
现在我尝试直接调用函数test\u load\u json\u,以便正确加载json字符串。没问题。这只是为了检查json.load函数的正确行为

问题是,当我尝试从迭代调用函数test\u load\u json\u时,json字符串未被识别并返回错误

ValueError: No JSON object could be decoded

我做错了什么?

您的json无效。属性名称和值必须用引号括起来,除非它们是数字。您还缺少逗号

此错误最可能的原因是json文件中的错误。由于json模块不显示详细的错误,因此可以使用simplejson模块查看实际发生的情况

将代码更改为:

import simplejson
.
.
.

data = simplejson.load(log_file)
然后查看错误消息。它将显示失败的行和列

例:


希望有帮助:如果您有任何疑问,请随时询问。

是否确实打开了同一个文件?你确定吗?尝试打印循环中的每个文件名。@标点符号:请将JSON粘贴到此处=>并进行验证。我看到的唯一问题是目录中有一个文件包含无效的JSON数据。你们能删除所有的json文件,只保留一个并测试它吗?然后只在文件路径中发布。尝试在单个文件上循环之前打印文件列表。检查它的类型。它应该是列表。没有任何语法或逻辑问题。..@标点符号,另外,不要使用json,请尝试使用simplejson。如下所示:data=simplejson.loadlog\u文件。它将向您显示更详细的错误,比如json失败的地方。我添加了一个try-catch来处理错误,并对超过1k的文件进行了迭代。我发现有一个文件不包含任何数据。谢谢你的帮助!