Какие типы данных допустимы для ключей в JSON?

«Какие типы данных допустимы для ключей в JSON?» — вопрос из категории Форматы данных, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Согласно официальной спецификации RFC 8259, ключом в объекте JSON может быть только строка (string), заключённая в двойные кавычки (").

✅ Валидный JSON:

{
  "username": "alice",
  "age": 30,
  "is_active": true
}

❌ Недопустимые ключи (нарушают спецификацию):

  • Числа: { 42: "answer" }
  • Булевы значения: { true: "yes" }
  • null: { null: "empty" }
  • Объекты или массивы: { {"key": "sub"}: "value" }

Важное замечание: Некоторые языки (например, JavaScript) при парсинге JSON могут неявно приводить неквотированные ключи к строкам, но это поведение нестандартно. Для гарантированной совместимости всегда используйте строки в двойных кавычках.

// JavaScript может «простить» отсутствие кавычек, но это не валидный JSON
const obj = { key: "value" }; // Это объект JS, а не JSON-строка
const jsonString = JSON.stringify(obj); // Преобразуется в '{"key":"value"}'