我有一个如下所示的JSON文件:
{
"name":"A",
"age":19
}
{
"name":"B",
"age":20
}
因此,基本上该文件包含人员列表。
我尝试在Python 3中使用json.loads(str_content)
,但返回了错误json.decoder.JSONDecodeError: Extra data:
。
我检查了在线JSON解析器(http://json.parser.online.fr),它告诉了我同样的问题。
如何解析不带根元素但包含JSON对象列表的JSON文件?
答案 0 :(得分:3)
问题是您要解析的字符串不是有效的JSON文档。它实际上是JSON文档的串联。因此简单的json.loads()
将无法正常工作。
您可以改用基于https://docs.python.org/3/library/json.html#json.JSONDecoder.raw_decode的内容。例如:(代码有点难看,但逻辑应该清晰):
import json
s = """{
"name":"A",
"age":19
}
{
"name":"B",
"age":20
}"""
def iter_jsons(s):
decoder = json.JSONDecoder()
i = 0
while True:
doc, i2 = decoder.raw_decode(s[i:].strip())
yield doc
if i == i2:
break
i= i2
print(list(iter_jsons(s)))
[{'name':'A','age':19},{'name':'B','age':20}]
答案 1 :(得分:0)
这就像一种魅力
import json
json_file = "myfile.json"
objects = json.load(open(json_file))
for person in objects:
name = person['name']
print(name)