Я хотел бы прочитать несколько объектов JSON из файла/потока в Python, по одному за раз. К сожалению json.load()
только .read()
до конца файла; кажется, нет никакого способа использовать его для чтения одного объекта или лениво перебирать объекты.
Есть ли способ сделать это? Использование стандартной библиотеки было бы идеальным, но если там была сторонняя библиотека, я бы это использовал.
В настоящий момент я помещаю каждый объект в отдельную строку и используя json.loads(f.readline())
, но я бы предпочел не делать этого.
Пример использования
example.py
import my_json as json
import sys
for o in json.iterload(sys.stdin):
print("Working on a", type(o))
in.txt
{"foo": ["bar", "baz"]} 1 2 [] 4 5 6
пример сеанса
$ python3.2 example.py < in.txt
Working on a dict
Working on a int
Working on a int
Working on a list
Working on a int
Working on a int
Working on a int