首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用yajl或ijson提取json

使用yajl或ijson提取json
EN

Stack Overflow用户
提问于 2015-01-26 09:22:11
回答 1查看 446关注 0票数 1

我是JSON的新手,我正在尝试探索一个无法加载到内存中的巨大(16 to ) JSON文件。我可以使用python中的ijsonyajl轻松获得JSON数组的第一个条目吗?

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

代码语言:javascript
复制
parsed = ijson.parse(open("file.json"))
for f in parsed:
    print f

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

EN

回答 1

Stack Overflow用户

发布于 2015-04-30 06:58:43

如果您了解JSON的结构,就可以在解析时动态构建它。在解析大约3 gb的json时,我遇到了这个问题。它不是很漂亮,但它起作用了。

因此,每个对象都有一个doc_id、一个正文、一个url和一个标题。对于每个已解析的项(前缀),我确定它是哪种类型,并注意到我们有一个布尔值。找到所有对象后,我将其添加到一个数组中,该数组最终将包含JSON中的所有对象。

代码语言:javascript
复制
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})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28143578

复制
相关文章

相似问题

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