
Комментарии 20
Я бы дополнил бы статью примерами использования дата-время, в разных ISO стандартах, там много интересного есть
hello world! джейсон примерно 300Гб, напишите как вы там будете?
мне кажется, или тому кто использует джейсоны на 300 Гб надо просто оторвать руки, чтобы он не мучался и не мучал окружающих?
Кстати, напомнили. Во времена, когда гугловый RSS reader прекращал своё существование, я успел сохранить (экспортировать, архивировать) всю новостную ленту со всеми новостями. Он в JSON формате. Без форматирования. Точный размер не скажу, но помню, что исчислялось гигабайтами.
Существующие на тот момент библиотеки не справлялись с таким объёмом данных. Нужно попробовать этот вариант, ради интереса.
Чтож, оторвите, например. Вопрос то был про "длинные" данные, а вы руки отрываете и это! hello world, то что есть из коробки в го, итак понятно.
кстати, у Дейва Чейни была великолепна статья, как работать с большими объемами, вы ему скажите, что оне не прав и всем хватит 640 килобайт
Видимо, вопрос с подвохом, потому что есть возможность читать не просто построчно или поблочно, а по-токенно. Читать его хоть из потока, и на лету декодировать содержимое
назовите хоть одну библу, где там вся асихронщина, ы?
Если под строками с экранированными символами вы подразумеваете json-строки, то и ничего страшного: буферизируете токены, пока не соберётся полный литерал; либо наткнётесь на ошибку.
Что касается формализации, так эта проблема никак не решается наивным разбиением на некоторые допустимые блоки исходных данных. Более того, вы вводите тем самым допущение, что очередная порция данных не будет превышать какой-то порог.
сначала разметил блок, валидация и ток потом парсинг
Вы не можете нормально валидировать блок, пока не распарсите его. В общем, если вы захотите сделать валидатор жсона, у вас получится парсер. Впрочем, вы и границы блока не сможете нормально определить по этой же причине.
Поэтому определение границы блока, валидация и парсинг — по сути один процесс, который можно и нужно делать в один проход. Ну а коли так, то почему бы и не из пайпа, к примеру? Если переживаете насчёт памяти, то можно и добавить проверку превышения некоторого порога.
бинго! Вы все правильно поняли!
видимо вы не умеете читать, разговор, если вы не поняли, был про коробку го и "длинные" данные, которые не из коробки. Что там и где лежит вы там порешали, очередной синьор помидор?
вы не знаете задач про 300Гб, поделитесь про террабайтную декомпизицию.
Поддерживаю! А для логов/отчётов уже придуман JSONL (JSON Lines).
Приветствую. Ошибка в "полный код" - нет доступа в https://goplay.tools/snippet/UfszC3iDvZW
// возможно у вас ошибка в коде:
if err != json.Decoder(r.Body).Decode(&req); err != nil {}
// наверное так
if err != json.NewDecoder(r.Body).Decode(&req); err != nil {}
JSON in GO