簡體   English   中英

如何解析沒有根元素的JSON字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM