Был дубликат на этот вопрос, у которого был лучший ответ. См. https://stackoverflow.com/a/10382359/1623645,, который предлагает ijson .
Обновление:
Я попробовал это, и ijson для JSON то же, что SAX для XML. Например, вы можете сделать это:
import ijson
for prefix, the_type, value in ijson.parse(open(json_file_name)):
print prefix, the_type, value
где prefix
- это разделенный точками индекс в дереве JSON (что произойдет, если в именах ваших ключей есть точки? Думаю, это будет плохо для Javascript ...), theType
описывает SAX -подобное событие, одно из 'null', 'boolean', 'number', 'string', 'map_key', 'start_map', 'end_map', 'start_array', 'end_array'
и value
- это значение объекта или None
, если the_type
- это событие, подобное началу / окончанию карты / массива.
В проекте есть несколько строк документации, но недостаточно глобальной документации. Мне пришлось копаться в ijson/common.py
, чтобы найти то, что я искал.