Ответ
Согласно официальной спецификации 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"}' Ответ 18+ 🔞
А, слушай, тут один тип пытался мне впарить, что в JSON можно ключи как угодно писать — числами там, булевыми значениями, да хоть null суй. Так вот, это пиздеж собачий, полнейший!
По канонам, по этим самым священным RFC 8259, ключом в объекте JSON может быть только строка, и точка! И эта строка должна быть в двойных кавычках, как порядочная, а не голышом бегать.
✅ Вот так правильно, блядь:
{
"username": "alice",
"age": 30,
"is_active": true
}
Всё чинно, благородно, ключи в кавычках, как в гробу.
❌ А вот это — чистой воды распиздяйство и нарушение всех мыслимых конвенций:
- Числа как ключи?
{ 42: "answer" }— хуй тебе, а не ключ. - Булевы значения?
{ true: "yes" }— да иди ты нахуй со своимtrue. null?{ null: "empty" }— ой, ну ёпта, это вообще за гранью.- Объекты или массивы в качестве ключа?
{ {"key": "sub"}: "value" }— это уже клиника, блядь, вызывайте санитаров.
Но тут, сука, есть подвох! Некоторые языки, взять того же JavaScript, они же всепрощающие, как мать Тереза. Могут они этот неформат проглотить и даже не поперхнуться, неявно превратив твой кривой ключ в строку.
// JavaScript может и простить, но это не делает твой уродец валидным JSON, понял?
const obj = { key: "value" }; // Это объект в JS, а не строка JSON!
const jsonString = JSON.stringify(obj); // А вот тут он уже причёсывается и выдаёт '{"key":"value"}'
Так что не ведись на эту хуйню! Если хочешь, чтобы твой JSON везде понимали, а не только в твоём кривом парсере, — заключай ключи в кавычки, ебать его в сраку! И не выёбывайся.