На разных языках мне нужно предоставить пользователям поток объектов JSON с интерфейсом, подобным следующему:
JSONObject json = stream.nextJSON();
Поскольку это поток, каждый вызов будет блокироваться, пока не будет получен полный объект. Это означает, что нет смысла пытаться инкапсулировать каждый объект JSON внутри большого массива. В поток должен быть добавлен дополнительный слой структуры и обработки.
Я подумал о двух вариантах:
- Сегментирование потока с нулевым символом завершения.
- Написание примитивного синтаксического анализатора, который понимает область действия JSON и может определить конец объекта.
У каждого из вышеперечисленных есть ряд потенциальных проблем для обсуждения: как нулевое завершение будет взаимодействовать с файловой системой, сокетом или базовыми потоками в C ++, Java и других языках? Какие крайние случаи мы должны принять во внимание при разборе? (например, различные типы символов кавычек могут запутать синтаксический анализатор). Кроме того, могут быть альтернативы двум выше.
Итак, вопрос: Каков наилучший способ предоставить JSON InputStream?