2017-02-09 4 views
1

Я изучал JSON, но Microsoft и w3school предоставляют различную информацию о синтаксисе.Какой правильный синтаксис для JSON?

Я застреваю, какой из них правильный.

Согласно майкрософт

JSON:

{firstName: "Rick", lastName: "Delorme", hairColor: "brown", eyeColor: "brown" } 

Также Согласно варианту Microsoft D. является правильным JSON синтаксиса enter image description here

По W3School

Это JSON

{ "name":"John" } 

И это ява скрипт-объект

{firstName: "Rick", lastName: "Delorme", hairColor: "brown", eyeColor: "brown" } 
+0

Связанные: [В чем разница между JSON и литерал объекта нотации?] (http://stackoverflow.com/q/2904131/218196) –

+0

Да, я заметил это после того, как прокомментировал. Я редактировал сообщение, чтобы сделать ссылки более заметными. –

+1

FWIW, на официальном сайте есть примеры: http://json.org/example.html. –

ответ

1

Синтаксис определяется W3Schools { "name":"John" } т.е. является правильным. Вы можете проверить любой JSON до JSONLint. Попробуйте экспериментировать с обоими.

+0

Также, согласно W3Schools, исправьте Json для разных данных. Типы: {"name": "John", "age": 31, "city": "New York"}. Также yo ucan ссылается: http://json.org/example.html –

1

Формат W3school - это правильный формат написания JSON! Если и хотите передать только один параметр в формате JSON, то и будет использовать

{"name":"John"} 

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

{ 
    "user1" : { 
     "name" : "mahesh", 
     "password" : "password1", 
     "profession" : "teacher", 
     "id": 1 
    }, 
    "user2" : { 
     "name" : "suresh", 
     "password" : "password2", 
     "profession" : "librarian", 
     "id": 2 
    }, 
    "user3" : { 
     "name" : "ramesh", 
     "password" : "password3", 
     "profession" : "clerk",  
     "id": 3 
    } 
} 
+1

Нет, пример Microsoft неверен. В JSON ключи должны быть строками (т. Е. Указанными). –

+0

пример, который я дал, правильный! в спешке я не проверял, что несколько значений не находятся в другом String! @FelixKling thanx для исправления меня – Jaini

+2

* "{firstName:" Rick ", lastName:" Delorme ", hairColor:" brown ", eyeColor:" brown "} для нескольких параметров" * недействителен JSON. И вы утверждаете, что «оба являются правильными форматами для записи JSON» *, что неверно. –

0

синтаксис W3School является правильным.

1

Попробуйте использовать JSONLint, чтобы подтвердить ваш json, правильный: {"name": "John"} согласно w3 school.

Проверьте это answer также. Это может помочь.

0

Прочитайте link w3schools, и вы получите разницу между объектами JSON и JavaScript.

This ссылка на MSDN, где вы можете проверить JSON синтаксис Microsoft.

Синтаксис JSON - это подмножество синтаксиса JavaScript.

JSON Правила Синтаксис

Синтаксис JSON является производным от JavaScript Object Notation синтаксис:

  • данных в пар имя/значение
  • Данные разделены запятыми
  • Фигурные скобки держат объекты
  • Квадратные скобы держат массивы

Для имен JSON требуются двойные кавычки. Имена JavaScript нет.

В JSON, ключи должны быть строками, написанные в двойные кавычки: { "имя": "Джон"}

В JavaScript, ключи могут быть строками, числами или имена идентификаторов: { имя: «Джон»}

+0

@Teemu: * «имена объектов должны быть строками» * Это утверждение сбивает с толку. Имена свойств объекта * являются * строками, это правда, но синтаксис мудрый, внутри объекта * literal *, использование строковых * литералов *, число * литералов * и * идентификаторов имен * (и вычисленных свойств) является допустимым. –

+0

@FelixKling Да, вы правы, плохой выбор слов от меня.Даже ссылку на функцию можно использовать как имя свойства, она просто преобразуется в строку автоматически. – Teemu

0

Короткий ответ: все они следуют одним и тем же основным форматам, но есть одно отличие: JSON использует двойные кавычки вокруг имен, а JavaScript - нет. Различие в спецификации формата, которые вы перечислили, является представление в двойные кавычки ("), чтобы окружить имя часть пар имя/значение объекта JSON.

Официальный ECMA JSON Data Interchange Format документ не не конкретно сказать, что название части пара имен/значений должна быть обернута кавычками. См. также http://json.org/, а также для краткой сводки. Однако JSON специально заявляет, что обозначение объекта в JSON конкретно определяется путем указания строки до и значения после двоеточия (который представляет собой пару имя/значение), и обе эти части должны быть окружены фигурными скобками:

Структура объекта представлена ​​в виде пары фигурных фигурных скобок , окружающих нулевые или более пары имен/значений. Имя - это строка. одного маркеров толстой кишки следует за каждое имя, отделяя имя от значения (опять же, из ECMA JSON Data Interchange Format)

Технических характеристики дополнительных деталей, которые:

Строка представляет собой последовательность кодовых точек Unicode, завернутая с котировке знаки

Так как само определение объекта представляет собой пару имя/значение, в котором

«Имя является строкой» (раздел 6 того же document)

Можно сделать вывод о том, что имя должно всегда быть воплощен в кавычки, обращаясь к JSON (хотя и не в JavaScript).

JSON собственно буквально означает «Обозначение объекта JavaScript», что означает, что его создание было в рамках большого использования JavaScript.В самом JavaScript, это:

{ name: "value portion" } 

практически эквивалентно следующему:

{ "name": "value portion" } 

Проблема всегда предполагая, что это хорошая практика, когда кодирование в JavaScript является то, что название части имя/значение пары строки/объекта JSON могут содержать пробелы, такие как

{ "name portion": "value portion" } 

В этом случае следующие было бы синтаксически неправильно:

{ name portion: "value portion" } 

По этой причине многие люди программирования JavaScript предпочитают всегда использовать двойные кавычки вокруг имени части объектов имя/значение, так что он поддерживает совместимость с объектами JSON в процессе строительства или эксплуатации.

+1

* «Microsoft предпочла разоблачить тот факт, что почти 100% всех парсеров JSON будут разумно квалифицировать часть имени пары имя/значение как действительный токен, если он не содержит пробелов». * Это неправильно. Вы получите сообщение об ошибке, если вы попробуете 'JSON.parse (" {foo: 42} ")' в каждом браузере. –

+0

Спасибо @FelixKling. Я обновил свой пост, поскольку он был не только частично неточным, но и путаным с тем, что я хотел сообщить. Понятно, что. –

0

только в случае

{ 
name:"Rishabh"} 

Error: Parse error on line 1: 
{ name: "Rishabh"} 
--^ 
Expecting 'STRING', '}', got 'undefined' 

надеюсь, и будет получить точку, используя двойные кавычки в пар ключ/значение

Смежные вопросы