Являются ли значения ok, false, true, null, 123 допустимыми JSON

Являются ли следующие строки допустимым JSON?

"ok"

false

true

null

123

Если нет, то почему стандартный метод javascript JSON.parse позволяет использовать эти значения как действительный JSON?

Я иногда использую эти значения при реализации JSON REST API и сталкиваюсь с тем, что фреймворки Objective-C не анализируют эти значения.


person ioncreature    schedule 16.06.2015    source источник
comment
json.org все они действительны. если obj-c отвергает их, то obj-c неверен.   -  person Marc B    schedule 16.06.2015
comment
Может быть, пример фреймворка и ошибки?   -  person Alladinian    schedule 16.06.2015
comment
Если вы просто отвечаете строковыми представлениями примитивов из своего API, зачем вообще использовать JSON?   -  person Mike Brant    schedule 16.06.2015
comment
@MikeBrant, потому что JSON REST. Каждый запрос и ответ используют заголовок Content-Type: application/json   -  person ioncreature    schedule 16.06.2015


Ответы (1)


Строго говоря, эти значения сами по себе не являются допустимыми JSON, для чего потребуется либо оболочка объекта {} (и конфигурация в виде пары ключ-значение), либо оболочка массива [] вокруг них. Однако существует множество библиотек сериализации JSON, которые позволяют использовать невложенные примитивы, как вы показали. Вероятно, лучше не полагаться на это поведение, если вы точно не знаете, какие библиотеки сериализации/десериализации JSON будут использоваться на обоих концах, и не можете убедиться, что они обе поддерживают это поведение одинаковым образом.

person Mike Brant    schedule 16.06.2015
comment
Я попробовал библиотеку JSON2 Дугласа Крокфорда. И что? Все примитивы успешно проанализированы. Кстати, Дуглас Крокформ является автором формата JSON. - person ioncreature; 16.06.2015
comment
@ioncreature Опять же, существует большое количество библиотек, которые понимают примитивы, но если вам нужна широкая совместимость, вам не следует на это полагаться. - person Mike Brant; 16.06.2015