Я пишу веб-службу, которая возвращает объекты, содержащие очень длинные списки, закодированные в JSON. Конечно, мы хотим использовать итераторы, а не списки Python, чтобы мы могли передавать объекты из базы данных; к сожалению, кодер JSON в стандартной библиотеке (json.JSONEncoder
) принимает только списки и кортежи, которые должны быть преобразованы в списки JSON (хотя _iterencode_list
выглядит так, как будто он действительно работает на любом итерабельном).
Docstrings предлагают переопределить значение по умолчанию для преобразования объекта в список, но это означает, что мы теряем преимущества потоковой передачи. Раньше мы переопределяли частный метод, но (как и следовало ожидать), который прерывался, когда кодер был реорганизован.
Каков наилучший способ сериализации итераторов как списки JSON в Python потоковым способом?