有一个非常大的 JSON,例如:
{
'id': 'someid',
'type': 'group',
'children': [
{
'id': 'someid',
'type': 'group',
'children': [
{
'id': 'someid',
'type': 'person'
}
]
}
]
}
我需要使用Python提取所有对象,一个完整的类型对象:
{
'id': 'someid',
'type': 'person'
}
如果在一个对象中type==person(那么我会将这些对象添加到列表中)。如果 JSON 非常大并且子对象的数量未知并且可能会发生变化,该怎么办?
只需递归地遍历元素并收集您需要的元素即可:
结论:
如果
person最终元素肯定没有children,那么就简单一点;yield {'id': d['id'], 'type': d['type']}您可以返回整个当前字典,而不是包含某些元素的新字典yield d。使用 ijson 的解决方案,无需递归且无需将所有 json 加载到内存中。