В данной инструкции показан очень специфичный случай, когда программа принимает JSON из ненадежного источника, и JSON содержит массив объектов, у которых есть начальный токен [. Однако количество элементов в массиве велико, поэтому целостность JSON данных может быть повреждена.

Поврежденный JSON — как извлечь из него данные в Go?

1. Создайте файл json.go со следующим содержимым:

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

2. Запустите код через go run json.go;
3. Посмотрите на результат в терминале:

Помимо функции Unmarshall, пакет json также содержит API декодера. С помощью NewDecoder можно создать декодер. Через вызов метода Token от декодера, базовый Reader прочитывается и возвращается интерфейс токена. Он может содержать несколько значений.

Одно из значений является тип Delim, это руна, содержащая один из символов {, [, ], }. Основываясь на этом, фиксируется начало JSON массива. С помощью метода More для декодера можно зафиксировать больше объектов для декодирования.