JSON (JavaScript Object Notation) - это легкий формат, который используется для обмена данными. Он основан на подмножестве языка JavaScript (способ создания объектов в JavaScript). Поскольку указан в MDN , некоторый JavaScript не является JSON, а некоторый JSON не является JavaScript.
Примером того, где это используется, являются ответы веб-служб. В «старые» дни веб-службы использовали XML в качестве основного формата данных для передачи обратных данных, но с появлением JSON ( Формат JSON указан в RFC 4627 Дугласом Крокфордом ), это был предпочтительный формат, потому что он намного более легкий
. Вы можете найти намного больше информации на официальном веб-сайте J2ON .
JSON построен на двух структурах:
Ниже приведен пример данных JSON:
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
JSON (в Javascript) - это строка!
Люди часто предполагают, что все объекты Javascript являются JSON и что JSON является Объект Javascript. Это неверно.
В Javascript var x = {x:y}
не JSON, это объект Javascript. Эти два не то же самое. Эквивалент JSON (представленный на языке Javascript) будет var x = '{"x":"y"}'
. x
является объектом типа string, а не объектом в его собственном праве. Чтобы превратить это в полноценный объект Javascript, вы должны сначала его проанализировать, var x = JSON.parse('{"x":"y"}');
, x
теперь является объектом, но это больше не JSON.
При работе с JSON и JavaScript у вас может возникнуть соблазн использовать функцию eval
для оценки результата, возвращаемого в обратном вызове, но это не предлагается, поскольку есть два символа ( U + 2028 & amp; U + 2029), действительный в JSON, но не в JavaScript (подробнее об этом здесь ).
Поэтому необходимо всегда использовать скрипт Крокфорда, который проверяет для действительного JSON перед его оценкой. Ссылка на объяснение скрипта найдена здесь здесь , и вот прямая ссылка в файл js. Каждый главный браузер имеет свою собственную реализацию .
Пример использования парсера JSON (с json из приведенного выше фрагмента кода):
//The callback function that will be executed once data is received from the server
var callback = function (result) {
var johnny = JSON.parse(result);
//Now, the variable 'johnny' is an object that contains all of the properties
//from the above code snippet (the json example)
alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};
Парсер JSON также предлагает еще один очень полезный метод stringify
. Этот метод принимает объект JavaScript как параметр и выводит строку с форматом JSON. Это полезно, когда вы хотите отправить данные обратно на сервер:
var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}
Вышеуказанные два метода (parse
и stringify
) также принимают второй параметр , которая является функцией, которая будет вызываться для каждого ключа и значения на каждом уровне конечного результата, и каждое значение будет заменено результатом вашей введенной функции. (Подробнее об этом здесь )
Btw, для всех вас, кто думает, что JSON предназначен только для JavaScript, посмотрите этот пост , который объясняет и подтверждает