Может ли последовательность json-объектов быть однозначно проанализирована без дополнительных разделителей или без знания их длины? - PullRequest
0 голосов
/ 14 июля 2009

Я планирую протокол, в котором два приложения открывают сокет между ними и отправляют и получают легальные объекты json.

Может ли последовательность объектов json быть однозначно проанализирована, или мне понадобятся разделители, или префикс каждого объекта с его длиной или что-то в этом роде?

Ответы [ 2 ]

2 голосов
/ 14 июля 2009

Реальные объекты JSON всегда начинаются и заканчиваются соответствующими символами {и}. Таким образом, вы должны иметь возможность создавать анализатор потока, который правильно определяет границы на лету, без необходимости заранее знать длину.

Подробнее о синтаксисе см. json.org .

1 голос
/ 14 июля 2009

Допустимые объекты JSON имеют сбалансированные разделители.

Можете ли вы быть на 100% уверены, что получите только действительные объекты? У вас могут быть глюки в сети? Что делать, если отправитель умирает в середине передачи? Я думаю, вам понадобится либо:

а). Некоторое соглашение об объектах JSON, которые вы получаете, чтобы вы могли игнорировать частичный поток, пока не увидите начало одной из ваших согласованных полезных нагрузок. Например. все есть объект "Конверт"

б). подобный стеку механизм восстановления нажимает и «выталкивает» подсчет открывающих и закрывающих разделителей, пока вы не убедитесь, что у вас есть начало новой записи. При достаточно патологическом искажении это трудно сделать надежно.

Я очень предпочитаю первый вариант.

...