使用ijson分解一个大的json文件

gstyhher  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(187)

我有一个很大的json-file(太大了,内存无法容纳),结构如下:

{
    "commonVal": "foo",
    "entries": [
        { "bar": "baz1" },
        { "bar": "baz2" },
        ...,
    ]
}

我想把这个json文件处理成这样的对象:

commonVal: foo, bar: baz1
commonVal: foo, bar: baz2
...


1.读取commonVal(在列表之外)并将其存储在变量中,
1.逐个迭代entries
我有ijson库。
我可以使用kvitems执行第1步,使用items执行第2步,但我不知道如何将两者“混合”起来(我非常希望避免使用events-api,因为列表中的条目比示例中的条目更复杂)。

rsl1atfo

rsl1atfo1#

您需要使用ijson.parse,最好结合使用事件拦截机制。
ijson.parse将允许您迭代JSON文件中的每个事件。使用此功能,您应该能够读取公共数据,并确定大列表何时开始。然后您可以将其余结果转发到ijson.items
查看事件拦截机制文档中的示例,经过一些简单的修改,它应该非常符合您的需要。

相关问题