首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析没有根元素的JSON字符串?

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

Stack Overflow用户
提问于 2018-11-22 16:38:39
回答 2查看 1.8K关注 0票数 1

我有一个如下所示的JSON文件:

代码语言:javascript
复制
{
  "name":"A",
  "age":19
}
{
  "name":"B",
  "age":20
}

所以基本上这个文件包含一个人员列表。

我尝试在Python3中使用json.loads(str_content),但它返回了json.decoder.JSONDecodeError: Extra data:错误。

我检查了一个在线JSON解析器(http://json.parser.online.fr),它告诉我同样的问题。

如何解析没有根元素但有JSON对象列表的JSON文件?

EN

回答 2

Stack Overflow用户

发布于 2018-11-22 16:54:16

问题是您试图解析的字符串不是有效的JSON文档。它实际上是JSON文档的串联。因此,简单的json.loads()将不起作用。

你可以使用一些基于https://docs.python.org/3/library/json.html#json.JSONDecoder.raw_decode的东西。例如:(代码有点难看,但逻辑应该是清晰的):

代码语言:javascript
复制
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}

票数 3
EN

Stack Overflow用户

发布于 2019-06-26 05:29:36

这就像一种护身符。

代码语言:javascript
复制
import json        
json_file = "myfile.json"

objects = json.load(open(json_file))

for person in objects:
    name = person['name']
    print(name)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53426839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档