Оба действительны.Однако есть некоторые ключевые слова, которые вы не можете использовать, например delete
, поэтому, чтобы не заключать их в кавычки, чтобы они не обрабатывались буквально синтаксическим анализатором ECMAScript, а вместо этого явно указывались как строки.
Кроме того, JSON spec требует, чтобы ключи имели кавычки вокруг них:
Строка начиналась и заканчивалась
кавычками
Так что {key:'value'}
- этонедопустимо JSON, но допустимо JS, в то время как {"key":"value"}
допустимо JS и JSON.
Примеры ключевых слов и недействительных / неоднозначных ключей:
>>> ({delete:1})
SyntaxError: Unexpected token delete
>>> ({'delete':1})
Object
Другой пример:
>>> ({first-name:'john'})
SyntaxError: Unexpected token -
>>> ({'first-name':'john'})
Object
>>> ({'first-name':'john'})['first-name']
"john"