Ответ 1
В JSON, 6
- номер шесть. "6"
- это строка, содержащая цифру 6
. Итак, ответ на вопрос "Может ли json numbers быть процитированным?" в основном "нет", потому что, если вы помещаете их в кавычки, они больше не являются цифрами.
Но, если парсеры принимают оба "attr": 6 и attr: "6"?
Второй пример недопустим, потому что attr
должен быть в кавычках, например:
{"attr": "6"}
... действителен и определяет объект с свойством attr
со строковым значением "6"
, тогда как:
{"attr": 6}
... действителен и определяет объект с свойством attr
с номером 6
и, наконец,
{attr: 6}
... и
{attr: "6"}
... оба недопустимы JSON, потому что имена свойств должны быть в двойных кавычках.
Если у MyParser есть метод getInt для получения числа с ключом, должен ли MyParser.getInt( "attr" ) возвращать 6 в обоих случаях или вызывать исключение в последнем случае?
Это дизайнерское решение для лица, предоставляющего синтаксический анализатор, в основном выбор между getInt
является строгим (бросая исключение, если вы пробуете его на "attr": "6"
) или освобождаете (принудительно "6"
в 6
и возвращаете это). JavaScript обычно свободен, и поэтому может быть аргумент за то, что он свободен; наоборот, тот факт, что JavaScript свободен, иногда вызывает проблемы, что может быть аргументом за то, что он строг.