Задача курса
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}
