Лучший способ предоставить JSON InputStream - PullRequest
0 голосов
/ 24 июня 2011

На разных языках мне нужно предоставить пользователям поток объектов JSON с интерфейсом, подобным следующему:

JSONObject json = stream.nextJSON();

Поскольку это поток, каждый вызов будет блокироваться, пока не будет получен полный объект. Это означает, что нет смысла пытаться инкапсулировать каждый объект JSON внутри большого массива. В поток должен быть добавлен дополнительный слой структуры и обработки.

Я подумал о двух вариантах:

  1. Сегментирование потока с нулевым символом завершения.
  2. Написание примитивного синтаксического анализатора, который понимает область действия JSON и может определить конец объекта.

У каждого из вышеперечисленных есть ряд потенциальных проблем для обсуждения: как нулевое завершение будет взаимодействовать с файловой системой, сокетом или базовыми потоками в C ++, Java и других языках? Какие крайние случаи мы должны принять во внимание при разборе? (например, различные типы символов кавычек могут запутать синтаксический анализатор). Кроме того, могут быть альтернативы двум выше.

Итак, вопрос: Каков наилучший способ предоставить JSON InputStream?

1 Ответ

1 голос
/ 24 июня 2011

Ну, Google, похоже, уже подумал об этом:

http://sites.google.com/site/gson/streaming

...