我是JSON的新手,我正在尝试探索一个无法加载到内存中的巨大(16 to ) JSON文件。我可以使用python中的ijson或yajl轻松获得JSON数组的第一个条目吗?
到目前为止,似乎效果最好的是:
parsed = ijson.parse(open("file.json"))
for f in parsed:
print f问题是输出是一大堆行,我不能很容易地将它们放回JSON条目中。我仍然不知道如何从这里进入一个实际的JSON条目。有什么想法吗?
发布于 2015-04-30 06:58:43
如果您了解JSON的结构,就可以在解析时动态构建它。在解析大约3 gb的json时,我遇到了这个问题。它不是很漂亮,但它起作用了。
因此,每个对象都有一个doc_id、一个正文、一个url和一个标题。对于每个已解析的项(前缀),我确定它是哪种类型,并注意到我们有一个布尔值。找到所有对象后,我将其添加到一个数组中,该数组最终将包含JSON中的所有对象。
result = []
u = False
b = False
i = False
t = False
for prefix, event, value in ijson.parse(open("./docs.txt", "rb")):
if(prefix == 'item.url'):
url = value
u = True
elif(prefix == 'item.body'):
body = value
b = True
elif(prefix =='item.doc_id'):
doc_id = value
i = True
elif(prefix == 'item.title'):
title = value
t = True
if u and b and i and t:
numofDocs = numofDocs +1
u = False
b = False
i = False
t = False
result.append({'doc_id': doc_id, 'url': url, 'title' : title, 'body' : body})https://stackoverflow.com/questions/28143578
复制相似问题