Python 3:如何将文件json读入字典列表?

时间:2016-09-05 14:30:29

标签: python json dictionary

我有Json格式的文件:

{"uid": 2, "user": 1}
{"uid": 2, "user": 1}
{"uid": 2, "user": 1}

当我使用以下代码时,它显示错误:

    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 22)

with open('E:/list.txt','r') as target:
        my_list = json.load(target)

如何将我的文件内容转换为字典列表?谢谢

3 个答案:

答案 0 :(得分:2)

您的文件不是JSON,而是JSON的列表。

with open(filec , 'r') as f:
    list = list(map(json.loads, f))

答案 1 :(得分:2)

它基本上没有加载你的内容,因为它不是一个有效的json格式,试试这个脚本:

import json

try:
    file_content = """{"uid": 2, "user": 1}
    {"uid": 2, "user": 1}
    {"uid": 2, "user": 1}"""

    json.loads(file)
except Exception as e:
    print("This is not JSON!")

print('-' * 80)
file_content = """[{"uid": 2, "user": 1},
{"uid": 2, "user": 1},
{"uid": 2, "user": 1}]"""

print(json.loads(file_content))

结果将是:

This is not JSON!
--------------------------------------------------------------------------------
[{'user': 1, 'uid': 2}, {'user': 1, 'uid': 2}, {'user': 1, 'uid': 2}]

证明如果你将字典包装成括号并用逗号分隔项目,json将被正确解析

当然,如果您根本不想调整文件,可以执行以下操作来创建输出:

import json

file_content = """{"uid": 2, "user": 1}


{"uid": 2, "user": 1}


{"uid": 2, "user": 1}

"""

output = [json.loads(line)
          for line in file_content.split("\n") if line.strip() != ""]
print(output)

答案 2 :(得分:1)

您必须进行迭代,因为json.load不会自动执行此操作。
所以应该有这样的东西

for line in file:
    json_obj = json.loads(line)
    my_list.append(json_obj)