Задача курса

Go encoding/json: фильтрация потока JSON по полю alert

Курс «Golang с нуля» · урок «JSON: кодирование и декодирование через encoding/json»

Условие

Журнал тревог умного дома

Система умного дома непрерывно собирает показания датчиков: температуры, влажности, движения, концентрации газа — из каждой комнаты квартиры или офиса. Датчики работают в фоне и молча передают поток событий, подавляющее большинство которых просто фиксирует нормальную обстановку. Именно поэтому среди сотен записей за день по-настоящему важны лишь те, что помечены флагом тревоги: слишком высокая температура, посторонний запах или несанкционированное движение в ночные часы.

Инженер, настраивающий такую систему, хочет получить отдельный журнал: компактный список только тревожных событий, пригодный для дальнейшей обработки или отображения на панели диспетчера. Входной поток устроен просто — каждая строка представляет собой самостоятельное JSON-описание одного события с указанием комнаты, типа датчика, измеренного значения и признака тревоги. Нулевые показания значения в выходном журнале не занимают места.

Что нужно сделать

Допишите writeAlerts. Вход содержит самостоятельные JSON-объекты, записанные подряд по одному на строку. Читайте их до конца потока и выводите в том же порядке только события с alert=true. Нулевое value не должно попадать в выходной JSON. Ошибку чтения или записи верните вызывающему коду.

Формат ввода

Ноль или больше JSON-объектов Event, по одному на строку.

Формат вывода

Тревожные события в формате newline-delimited JSON.

Пример

Ввод:
{"room":"kitchen","sensor_type":"smoke","value":8,"alert":false}
{"room":"garage","sensor_type":"smoke","value":42,"alert":true}

Вывод:
{"room":"garage","sensor_type":"smoke","value":42,"alert":true}

Примеры

Пример 1

Ввод
{"room":"kitchen","sensor_type":"smoke","value":8,"alert":false}
{"room":"garage","sensor_type":"smoke","value":42,"alert":true}
Ожидаемый результат
{"room":"garage","sensor_type":"smoke","value":42,"alert":true}

Попробуйте решить

РешениеGo
Без регистрации · результат не сохраняется