Как я могу лениво читать несколько значений JSON из файла / потока в Python?

Я бы хотел прочитать несколько объектов 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

example session

$ 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
93
задан Jeremy Banks 7 December 2017 в 22:18
поделиться