Есть ли какая-либо разница в ключе JSON при использовании одинарных и двойных кавычек?

#javascript #json #double-quotes

#javascript #json #двойные кавычки

Вопрос:

Я запустил две части кода javascript на онлайн-платформе, работающей на JS:Ссылка на веб-сайт

 pets = '{'pet_names':[{"name":"jack"},{"name":"john"},{"name":"joe"}]}';
var arr = JSON.parse(pets);
alert(arr.pet_names[1].name);
  

Код с двойными кавычками («pet_names») был бы в порядке, но с одинарными кавычками (‘pet_names’) будет напоминать ошибку:«Неожиданный идентификатор»

 pets = '{"pet_names":[{"name":"jack"},{"name":"john"},{"name":"joe"}]}';
var arr = JSON.parse(pets);
alert(arr.pet_names[1].name);
  

Итак, почему это могло произойти?

Ответ №1:

В JSON допустимы только двойные кавычки.

Вы можете найти стандарт на JSON.org

Значением может быть строка в двойных кавычках, или число, или true, или false, или null, или объект, или массив. Эти структуры могут быть вложенными.

Другими словами, нет строк в одинарных кавычках.

Ответ №2:

Первый вариант не сработал, потому что у вас синтаксическая ошибка при попытке определить свой строковый литерал
, который вы, вероятно, хотели

 pets = '{'pet_names':[{"name":"jack"},{"name":"john"},{"name":"joe"}]}';
  

обратите внимание, что кавычки экранированы.

Теперь, если вы использовали эту строку в анализаторе json, вы все равно получили бы ошибку (SyntaxError: неожиданный токен ‘), поскольку ключи в JSON должны быть определены с помощью двойных кавычек, использование одинарных кавычек допустимо для определения литералов объектов JavaScript, которые отделены от JSON.