Инкрементный анализ JSON в php

В php-программе я хочу постепенно анализировать JSON. Например, учитывая частичный JSON

[1, 2, {"id": 3}, 

Я хочу получить 1, 2 и словарь даже до того, как остальная часть входа JSON будет передана. php's json_decode просто возвращает NULL и, похоже, нет способа получить позицию ошибки.

Обновить

Я написал небольшой класс, который выполняет парсинг ввода JSON char-by-char. https://github.com/janeklb/JSONCharInputReader

Свежий от прессов, поэтому, вероятно, у вас есть несколько ошибок. Если вы решите попробовать, дайте мне знать!

Не могли бы вы (при отслеживании '{', '[', ']', '}' scope) разбить поток на каждую запятую, которая не является частью строкового значения? А затем обрабатывать каждый токен с помощью json_decode ()?

Это решение будет работать лучше всего, если в потоке json не было много больших объектов (так как они будут анализироваться только после их полного заполнения).

Изменить: если у него большие объекты, эта стратегия может быть изменена, чтобы выглядеть немного «глубже», но сложность здесь будет стрелять.

Я написал SAX-подобный потоковый парсер JSON, который должен сделать трюк. Дайте мне знать, если это сработает!

Существует простая работа, если каждый отдельный элемент гарантированно будет получен в полном объеме, или, другими словами, вы не можете получить, например, только половину объекта, например:

 {"a": 1, 

json_decode() вернет NULL, потому что строка, которую вы передаете, не является допустимой строкой JSON. Замените конечную запятую конечной скобкой и там вы:

 [1, 2, {"id": 3}] 

В декодировании сейчас нет проблем и ждать, пока другие части потока будут получены позже.