[英]How to parse a JSON string with no root element?
我有一個如下的JSON文件:
{
"name":"A",
"age":19
}
{
"name":"B",
"age":20
}
因此,基本上該文件包含人員列表。
我嘗試在Python 3中使用json.loads(str_content)
,但返回了json.decoder.JSONDecodeError: Extra data:
錯誤json.decoder.JSONDecodeError: Extra data:
我檢查了在線JSON解析器( http://json.parser.online.fr ),它告訴我同樣的問題。
如何解析不包含根元素但包含JSON對象列表的JSON文件?
問題是您嘗試解析的字符串不是有效的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}]
這就像一個魅力
import json
json_file = "myfile.json"
objects = json.load(open(json_file))
for person in objects:
name = person['name']
print(name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.