Найдите все синтаксические ошибки JSON в этом блоке конфигурации
Ниже — блок конфигурации, который должен быть валидным JSON, но не парсится. Найдите каждую синтаксическую ошибку и укажите правильное исправление для каждой. Отличайте строгие нарушения синтаксиса от значений, которые лишь выглядят подозрительно (строка там, где, вероятно, ожидалось булево).
{
"block_id": 73bf37d59d,
"padding_top": 01,
"options": {
"title_font_size": 20,5
title_font_style : null,
"has_light_background": "false",
"value": [ "mobile", ],
"items": [ { "type": "simple", "title": "Movies" ]
}
}
Определите причину.
Блок нарушает несколько правил JSON: строковое значение без кавычек (73bf37d59d), ведущий ноль (01), запятая как десятичный разделитель (20,5 должно быть 20.5), ключ без кавычек (title_font_style), висячая запятая после "mobile" и пропущенная закрывающая } у объекта {type, title} перед его ]. Кавычки у "false" допустимы, но, вероятно, должно быть булево false.
- ✗Пропустить ключ без кавычек
title_font_style - ✗Упустить пропущенную закрывающую скобку перед
]массиваitems - ✗Считать подозрительную строку
"false"строгой синтаксической ошибкой
- →Почему JSON запрещает ведущий ноль в числе вроде
01? - →Какие из этих ошибок поймал бы линтер, а какие — валидатор схемы?
Каждая найденная ошибка и её исправление:
"block_id": 73bf37d59d— голый токен не является валидным значением JSON. Возьмите в кавычки:"73bf37d59d"."padding_top": 01— ведущие нули в числах JSON запрещены. Используйте1(или"01", если нужна строка)."title_font_size": 20,5— запятая не может быть десятичным разделителем. Нужна точка:20.5. (Плюс после значения не хватает запятой.)title_font_style : null— ключи обязаны быть строками в двойных кавычках:"title_font_style"."value": [ "mobile", ]— уберите висячую запятую после"mobile"."items": [ { "type": "simple", "title": "Movies" ]— у внутреннего объекта не хватает закрывающей}перед]."has_light_background": "false"— валидный JSON (это строка), но подозрительно: скорее всего, имелось в виду булевоfalse. Это замечание к требованиям, а не строгая синтаксическая ошибка.
Исправленный блок парсится:
{
"block_id": "73bf37d59d",
"padding_top": 1,
"options": {
"title_font_size": 20.5,
"title_font_style": null,
"has_light_background": false,
"value": [ "mobile" ],
"items": [ { "type": "simple", "title": "Movies" } ]
}
}
Дисциплина в том, чтобы отделять жёсткие нарушения синтаксиса (на них падает любой парсер) от значений, которые парсятся нормально, но, вероятно, противоречат задуманной схеме.