Python 使用yajl或ijson提取json

Python 使用yajl或ijson提取json,python,json,Python,Json,我是JSON新手,我正在尝试探索一个无法加载到内存中的16GB JSON文件。我可以在python中使用ijson或yajl之类的工具轻松地获取JSON数组的第一个条目吗 到目前为止效果最好的是: parsed = ijson.parse(open("file.json")) for f in parsed: print f 问题是,输出是一大堆行,我无法轻松地将它们放回JSON条目中。我仍然不知道如何从这里进入实际的JSON条目。有什么想法吗?如果您知道JSON的结构,您可以在解析时

我是JSON新手,我正在尝试探索一个无法加载到内存中的16GB JSON文件。我可以在python中使用ijson或yajl之类的工具轻松地获取JSON数组的第一个条目吗

到目前为止效果最好的是:

parsed = ijson.parse(open("file.json"))
for f in parsed:
    print f

问题是,输出是一大堆行,我无法轻松地将它们放回JSON条目中。我仍然不知道如何从这里进入实际的JSON条目。有什么想法吗?

如果您知道JSON的结构,您可以在解析时动态构建它。我在解析大约3 gb的json时遇到了这个问题。虽然不漂亮,但效果不错

因此,每个对象都有一个url、一个主体、一个文档id和一个标题。对于每个解析的项目前缀,我确定它是什么类型的,并注意到我们有一个bool。找到所有对象后,我将其添加到一个数组中,该数组最终将包含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})