使用 ijson 从 json 文件中提取值

extracting values from json file using ijson

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

{"details":{

    "1000":[
        ["10","Thursday","1","19.89"],

        ["12","Monday","3","20.90"],
        ...
    ]
    "1001":[
        ["30","Sunday","11","80.22"],

        ["88","Wednesday","22","8.29"],
        ...
    ]

    }
}

现在我使用 ijson[=28= 从“details”值中提取“1000”、“1001”等变量中的列表](交互式 Json)使用下面给出的代码:

import ijson as ijson
filename='Clean_Details.json'

with open(filename,'r') as f:
    objects=ijson.items(f,'details.1001.item')
    for row in objects:
        print(row)
    print("Done")

但问题是:for 循环在上面的代码中没有终止。在 1001 中打印最终列表后,它保持 运行.

我猜测上面代码中的 Generator(objects) 没有遇到 StopIteration 不知道为什么。

有人可以帮忙吗? 如果能提供一点帮助,我们将不胜感激。

好的,因为 JSON 文件的 大尺寸 > 800MB 对于超过一百万条记录,解析需要时间才能完成,因此

循环最终终止,但需要一些时间才能完成。在普通配置的电脑上肯定需要一些时间。

同时使用:

import ijson as ijson

在非常大的文件上速度较慢,因为大部分解析都是使用 python 后端代码进行的,因此为了提高速度,

更好用

import ijson.backends.yajl2_cffi as ijson

因为它有一个使用 cffi 的 C 语言后端,这确实缩短了上述代码的 运行 时间。