Учебные JSON-данные: проверить синтаксис и ожидаемую структуру
Успешный JSON.parse означает только корректный синтаксис JSON. Приложению отдельно нужно проверить, что полученная структура содержит нужные поля подходящих типов.
Назначение
Успешный JSON.parse означает только корректный синтаксис JSON. Приложению отдельно нужно проверить, что полученная структура содержит нужные поля подходящих типов.
Как это работает
После разбора проверьте верхний уровень, затем каждый элемент массива. Явная проверка даёт понятную ошибку раньше, чем попытка отобразить отсутствующее название или выполнить метод у значения другого типа.
Пример
const source = '[{"title":"Первый урок","minutes":15}]';
const lessons = JSON.parse(source);
const valid = Array.isArray(lessons) && lessons.every(item =>
item !== null && typeof item === "object" &&
typeof item.title === "string" && item.title.trim() !== "" &&
Number.isSafeInteger(item.minutes) && item.minutes > 0
);
if (!valid) throw new Error("Ожидался список уроков с названием и длительностью");
console.log(lessons[0].title);
Что должно получиться
Для указанного набора выводится название первого урока. Проверка длительности отвергает отрицательные числа, дроби и строки. Проверка каждого элемента не запрещает пустой массив: это отдельное условие, если оно требуется задаче.
Граница применения и частая ошибка
Не запускайте JSON через eval и не считайте проверку на клиенте заменой серверной валидации. У большого файла есть ограничения памяти. Строка title остаётся обычным текстом и при выводе не должна бездумно попадать в innerHTML.
Самостоятельная проверка
Добавьте примеры с null, пустым названием, длительностью "15" и ошибочной запятой. Разделите ошибки синтаксиса JSON и ошибки структуры. Затем решите, допускаются ли пустой список и дополнительные поля.