我有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)
如何将我的文件内容转换为字典列表?谢谢
答案 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)