Переменные, массивы и объекты - привычная и удобная форма представления данных. Описывать данные принято в языке браузера JavaScript, что делать не обязательно в языке сервера PHP. Формат JSON позволяет обобщить их в одно целое и не делать акцент на языке программирования. При этом данные превращаются в пары: "имя = значение". Значение в каждой из них также может быть совокупностью таких пар.
Принято JSON ассоциировать с фигурными скобками и Последнее вполне обосновано, так как формат JSON = Object Notation JavaScript. В последние особенно динамичные годы многое изменилось. Что создавалось ради конкретной цели, часто приносило неожиданные плоды или открывало новые горизонты.
Обмен данными: браузер - сервер
Технология AJAX стала традиционной, обычное обновление страницы целиком перестало пользоваться популярностью. Посетитель, открывая сайт, инициирует серию частичных обменов данными, когда те или иные страницы меняются только в том месте, которое актуально.
Считается, что появление JSON связано с использованием именно AJAX, но на самом деле ассоциативные и его объектная нотация (особенности синтаксиса описания и использования объектов) имеют гораздо более родственное отношение к JSON, чем обмен данными между браузером и сервером.
Так как контент страниц современных сайтов действительно стал «массивным» (объемным), то и эффективность формата для обмена данными приобрела особое значение. Нельзя сказать, что JSON стал новым представлением данных, но то что он давно был элементом синтаксиса JavaScript, имеет существенное значение.
Использование кириллицы в именовании переменных - очень неожиданное явление (нонсенс), но это работает в последних версиях Chrome, Firefox и, даже, в Internet Explorer 11.
Кириллица и JSON
Разумеется, использовать это совершенно неожиданное явление не стоит, припоминая, как легко значения переменных, записанные русскими буквами, превращаются в кракозябры: что тут говорить про имена, особенно внешние.
Сомнительно, что инициативу в кириллических именах поддержит внешнее окружение браузера, с которым ему постоянно приходится иметь дело. Но этот факт заслуживает внимания по той простой причине, что JSON формат - это возможность писать имена и значения так, как угодно разработчику. Это принципиально, поскольку в каждой задаче описание области применения так, как она этого требует, существенно упрощает отладку и уменьшает количество ошибок.
Не важно, какое именно имело под собой основание синтаксическое новшество - JSON, важно, что оно дало законное право и реальную возможность поставить соответствие: "любое имя = любое значение".
Надо отдать должное языку JavaScript: то, что предусмотрено синтаксисом, не обязывает разработчика и ничего ему не навязывает. Разработчик свободно использует синтаксис языка для оптимального формирования модели данных и алгоритма их использования.
PHP и JSON
Принимая данные в формате JSON, сервер (посредством PHP, в частности) предоставляет возможность их обрабатывать как есть и возвращать обратно в браузер результат в аналогичном формате. Исходный массив PHP:
- $cJSON = array ("a"=> "alfa", "b"=> "beta", "g"=> "gamma").
Преобразование в формат JSON для передачи в браузер:
- $cJS = json_encode($cJSON ).
Результат:
- {"a":"alfa","b":"beta","g":"gamma"}.
Допускается изображенная на фото вложенность.
Здесь сформированный массив был добавлен новым элементом «сам в себя» с автоматическим индексом "0", а затем еще раз с указанным индексом "z".
Json_decode() выполняет преобразование строки JSON в массив PHP. Аналогичных результатов можно добиться, манипулируя функциями и explode(). В некоторых случаях этот вариант предпочтительнее.
Уровень вложенности
Элементы могут быть вложены друг в друга как на стороне браузера, так и на стороне сервера. На практике формат JSON (описание стандарта RFC 4627) предоставляет значительно более 4 уровней вложенности, но не следует злоупотреблять этой возможностью.
Лучше всего никогда не выходить за пределы разумной достаточности, это делает код читабельным, упрощает его отладку и понимание другими разработчиками.
JSON принято относить к конструкциям данных, которые проще XML, понятны одновременно и людям, и компьютерам. Это действительно так, когда объем данных мал, а уровень вложенности разработчик выбрал грамотно. Во всех остальных случаях считать количество скобок и понимать сложно как на стороне браузера, так и на стороне сервера.
Файлы JSON
Применение JSON на практике часто не ограничивается доступной восприятию короткой строкой. Любые конструкции данных всегда носят прагматичный характер. При этом JSON может эффективно применяться как в реальных данных задачи (штат предприятия), так и для реализации временных данных (кэш объекта).
Штат предприятия и JSON-формат: пример
Обычно запись об одном человеке - это фамилия, имя, отчество, год рождения, специальность, образование, ... и несколько еще простеньких значений. Даже в особо требовательных компаниях запись об одном человеке не будет превышать десятка-двух полей. Это доступно восприятию и может быть помещено в строку базы данных.
Если в компании работает несколько человек - это одно, но если десятки тысяч - это совсем другое. Можно продолжать использовать базу данных, но хранение ее в виде файла выглядит практичнее и доступнее для использования.
JSON - это обычный текстовый файл. Случай со штатным расписанием, куда ни шло. Прочитать его всегда можно. Открыть и изменить также доступно в любом текстовом редакторе, который не имеет привычки добавлять свою служебную информацию в содержание файла. Вообще, *.json - это чистый текст как внутри браузера, так и внутри файла - строка.
На фото представлен кэш объекта, формирующего картинку, пример.
Это пример содержания файла, сформированного сайтом, предоставляющим услугу цветной объемной печати на кружках и керамических изделиях. Естественно, решить, имея такой JSON-формат, чем открыть его, действительно проблематично. Однако в этом и подобных случаях проблем с чтением файла не возникает: PHP читает файл, разбирает его и передает в браузер. Изменённые посетителем данные возвращаются на сервер и записываются обратно.
В таком варианте использования файл выступает как переменная, которая хранится вне кода. При необходимости, переменная получает значение из файла, а если она будет изменена посетителем в диалоге, предусмотренном сайтом, то все изменения запишутся как есть. Нет необходимости читать и проверять содержимое файла.
JSON часто используется для хранения и использования служебной информации - это не штатное расписание, его не обязательно видеть ни разработчику, ни посетителю сайта.
XML и JSON
"Всему свое время" - классическое знание, принятое за аксиому еще до появления программирования. "Ни что не появляется просто так", - это тоже было до того, как человек написал первую вразумительную программу на искусственном языке.
Форматы данных появляются от реальной потребности и основываются на достигнутых знаниях. У HTML - своя стезя, у XML - своя дорога, а JSON - это объектная логика JavaScript, расширенная на другие языки. Сравнивать одно с другим не лучшее занятие. Каждому свое.
XML чудесно справляется со своими задачами и уходить в историю явно не собирается. А JSON использовался и до 2006 года, просто не каждый разработчик считал своим долгом декларировать те или иные варианты представления своих данных.
Имелись случаи в практике, когда на бэйсике были написаны программы, не использующие JSON как таковой, но прекрасно хранящие пары "имя = значение" и предоставляющие их в распоряжение нужным алгоритмам в нужное время.
Спецсимволы («`», «~», «|», ...) и форматы данных
Привычка работать с ассоциативными массивами и объектами на JavaScript делает использование JSON естественным и удобным. Это действительно отличный формат, но умение разделять и соединять, манипулируя строками и массивами, имеет куда более глубинные корни.
Функции join/split языка JavaScript и implode/explode языка PHP позволяют удобно и эффективно использовать как форматы данных XML, JSON, так и собственный вариант. Последний часто оптимальнее, а первые два идеально подходят для вариантов общего пользования. Если идет передача информации другому разработчику, серверу, в файл или в базу данных, лучше XML и JSON не найти. С ними все работают, потому передача/прием информации не нуждается в комментариях.
Использование JSON в Android
Чтение и запись данных в формате JSON в Android - не только норма вещей, но и множество объектов, ориентированных на работу именно с таким форматом данных.
При этом используется именно формат JSON. Возможно, это так и есть, но вопрос не в феноменальности соцсетей, а в том что действительно представление информации в формате "имя = значение" удобно как для программирования, так и для использования. В отличие от строгого и закомплексованного «XML» это действительно человеко-удобный формат.
Ассоциативные массивы
Сложилось так, что переменные надлежит описывать (JavaScript) или хотя бы указывать начальное значение (PHP). В обоих случаях переменная может изменить свой тип очень легко. При необходимости язык выполняет это преобразование автоматически.
Но почему бы переменной не менять также свое имя, не появляться в ходе выполнения алгоритма и не исчезать, когда необходимость в ней отпадет? Ассоциативные массивы позволяют решить эту проблему, но тогда при использовании таких относительно динамичных переменных, имя массива и соответствующие синтаксические конструкции будут следовать в места их применения.
Особенно это обстоятельство ярко выражено на PHP, но с этим можно мириться, как, впрочем, с символом «$» в имени переменной и комбинацией «$this->» внутри объекта. Программируя одновременно на JavaScript и PHP, поначалу действительно диву даешься, как все отличается, но потом все становится таким привычным и естественным...
Ассоциативный массив -> JSON
В этом примере посредством библиотеки PHPOffice/PHPWord создается документ *.docx, и массив aProperties содержит свойства этого документа (автор, компания, заголовок, категория, дата создания...).
Второй массив содержит данные по странице:
- ориентация (альбомная или обычная);
- размеры по вертикали и горизонтали;
- отступы (поля слева, сверху, снизу, справа);
- колонтитулы.
Формирование документа выполняется на сервере, где установлена библиотека PHPOffice/PHPWord. На сайте предусмотрено управление значениями этих массивов посредством JavaScript. Результат в формате JSON возвращается обратно на сервер и используется в алгоритмах на PHP, в его конструкциях, то есть в массивах.
Динамичные переменные
Формат JSON решает проблему динамичных переменных. Здесь можно создавать, изменять и удалять переменные без лишних синтаксических нагромождений. Это красиво смотрится и используется в JavaScript.
В этом примере функция GetOjInfo () выбирает имя значения и значение из объекта. Изначально объект JSON-строки, присвоенной переменной ojInfo, располагает тремя элементами: Name, age и work. Чуть позже добавляется переменная Status.
После первого оператора delete строка ojInfo теряет элемент age, после второго delete - элемент work. Если предположить, что данная строка есть подборка переменных, имеющих определенный смысл, то посредством JSON можно реально создавать, изменять и удалять любые их наборы вне операционного поля (синтаксиса) описания и обработки языка JavaScript.
Формат JSON на такой вариант не был рассчитан, но такое возможно, практично и удобно.
Знакомые с программированием люди сразу узнают файлы с расширением JSON. Этот формат – аббревиатура терминов JavaScript Object Notation, и является он по сути текстовым вариантом обмена данными, использующемся в языке программирования JavaScript. Соответственно, справиться с открытием таких файлов поможет либо специализированное ПО, либо текстовые редакторы.
Основной особенностью скриптов в формате JSON является взаимозаменяемость его на формат XML. Оба типа представляют собой текстовые документы, которые можно открывать текстовыми процессорами. Однако начнем мы со специализированного ПО.
Способ 1: Altova XMLSpy
Достаточно известная среда разработки, которую используют в том числе и веб-программисты. Эта среда также генерирует файлы JSON, следовательно способна и открывать сторонние документы с таким расширением.
Недостатков у данного ПО два. Первый – платная основа распространения. Пробная версия активна 30 дней, однако для её получения необходимо указать имя и почтовый ящик. Второй – общая громоздкость: человеку, которому просто нужно открыть файл, она может показаться чересчур навороченной.
Способ 2: Notepad++
Многофункциональный текстовый редактор — первый из списка подходящих для открытия скриптов в формате JSON.
Плюсов у Notepad++ изрядно – тут и отображение синтаксиса многих языков программирования, и поддержка плагинов, и малый размер… Однако в силу некоторых особенностей работает программа неторопливо, особенно если открыть в ней объемный документ.
Способ 3: AkelPad
Невероятно простой и в то же время богатый на возможности текстовый редактор от российского разработчика. В число поддерживаемых им форматов входит и JSON.
Как и Notepad++, этот вариант блокнота также бесплатен и поддерживает плагины. Он работает шустрее, однако большие и сложные файлы может не открыть с первого раза, так что имейте в виду такую особенность.
Способ 4: Komodo Edit
Бесплатное ПО для написания программного кода от компании Komodo. Отличается современным интерфейсом и широкой поддержкой функций для программистов.
В программе, к сожалению, отсутствует русский язык. Однако рядового пользователя скорее отпугнет избыточный функционал и непонятные элементы интерфейса – все-таки этот редактор ориентирован в первую очередь на программистов.
Способ 5: Sublime Text
Еще один представитель code-oriented текстовых редакторов. Интерфейс проще, чем у коллег, однако возможности те же. Доступна и портативная версия приложения.
К сожалению, Sublime Text недоступен на русском языке. Недостатком можно назвать и условно-бесплатную модель распространения: свободная версия ничем не ограничена, но время от времени появляется напоминание о необходимости покупки лицензии.
Способ 6: NFOPad
Простой блокнот, однако для просмотра документов с расширением JSON тоже подойдет.
NFOPad подходит для просмотра JSON-документов, однако есть нюанс – при открытии некоторых из них программа намертво зависает. С чем связана такая особенность – неизвестно, но будьте внимательны.
Способ 7: Блокнот
И наконец, стандартный текстовый процессор, встроенный в ОС Windows, также способен открывать файлы с расширением JSON.
В завершение скажем следующее: файлы с расширением JSON – обычные текстовые документы, которые могут обрабатывать не только описанные в статье программы, а и куча других, в том числе и его бесплатные аналоги и . Высокая вероятность того, что с такими файлами смогут справиться и .
Урок, в котором рассматривается, что такое JSON и какие он имеет преимущества по сравнению с другими форматами данных.
Понятие JSON
JSON (JavaScript Object Notation) - это текстовый формат представления данных в нотации объекта JavaScript.
Это означает то, что данные в JSON организованы, так же как и в объекте JavaScript. Но в отличие от последнего формат записи JSON имеет некоторые особенности, которые будут рассмотрены немного позже.
Применяется JSON обычно в связки с AJAX для того, чтобы сервер мог передать данные в удобной форме сценарию JavaScript, который затем уже отобразит их на странице.
Структура формата JSON
Кто знаком с процессом создания объектов в JavaScript, не увидит ни чего нового в структуре формата JSON. Это связано с тем, что структура JSON соответствует структуре объекта JavaScript с некоторыми ограничениями.
Более просто представить себе JSON можно как контейнер, состоящий из элементов. Каждый элемент в таком контейнере - это некоторая структурная единица, состоящая из ключа и значения.
При этом значение напрямую связано с ключом и образуют так называемую пару ключ-значение. Для того чтобы получить значение в таком объекте, необходимо знать его ключ. Синтаксически такие данные в JSON записываются следующим образом:
В вышеприведенной записи видно, что ключ отделяется от значения с помощью знака двоеточия (:). При этом ключ в объекте JSON обязательно должен быть заключен в двойные кавычки. Это первая особенность JSON, которая его отличает от объекта JavaScript . Т.к. в объекте JavaScript ключ (свойство объекта) не обязательно должен быть заключён в двойные кавычки.
Например, структура объекта, которая является валидной с точки зрения JavaScript и не валидной с точки зрения JSON:
Var person = { name: "Иван"; } // объект JavaScript
Предупреждение: имя ключу старайтесь задавать так чтобы не усложнить доступ к данным, т.е. при составлении имени предпочтительно придерживаться верблюжьей нотации или использовать для соединения слов знак нижнего подчёркивания ("_").
Значение ключа в JSON может быть записано в одном из следующих форматов: string (строкой), number (числом), object (объектом), array (массивом), boolean (логическим значением true или false), null (специальным значением JavaScript).
Это второе ограничение в JSON, т.к. объект JavaScript может содержать любой тип данных, включая функцию .
Var person = { "name" : "Иван"; "setName": function() { console.log(this.name); } } // объект JavaScript
Для отделения одного элемента (пары ключ-значение) от другого используется знак запятая (,).
Например, рассмотрим JSON, состоящий из различных типов данных.
Внимание: формат представления данных JSON не допускает использование внутри своей структуры комментариев.
Работа с JSON в JavaScript
В отличие от объекта JavaScript JSON представляет собой строку.
Например:
// например переменная personData, содержит строку, которая представляет из себя JSON var personData = "{"name":"Иван","age":37,"mother":{"name":"Ольга","age":58},"children":["Маша","Игорь","Таня"],"married": true,"dog": null}";
Работа с JSON обычно ведётся в двух направлениях:
- Парсинг - это перевод строки, содержащей JSON, в объект JavaScript.
- Конвертирование объекта JavaScript в строку JSON. Другими словами, это действие выполняет преобразование обратное парсингу.
Парсинг JSON
Парсинг JSON, т.е. перевод строки JSON в объект JavaScript, осуществляется с помощью метода eval() или parse() .
Использование метода eval():
// переменная person - это объект JavaScript, который получен путём выполнения кода (строки) JSON var person= eval("("+personData+")");
Использование метода JSON.parse():
// переменная person - это объект JavaScript, который получен путём парсинга строки JSON var person = JSON.parse(personData);
Конвертирование объекта JavaScript в строку JSON
Перевод объекта JavaScript в строку JSON осуществляется с помощью метода JSON.stringify() . Данный метод осуществляет действие обратное методу JSON.parse() .
Var personString = JSON.strigify(person);
Преимущества формата JSON
Формат представления данных JSON имеет следующие преимущества:
- удобные и быстрые в работе методы, предназначенные для конвертации (парсинга) строки JSON в объект JavaScript и обратно;
- понятная и простая структура данных;
- очень маленький размер по сравнению с другими форматами данных (например XML). Это связано с тем, что формат JSON содержит минимальное возможное форматирование, т.е. при его написании используется всего несколько специальных знаков. Это очень важное преимущество, т.к. данные представленные в формате JSON будут быстрее загружаться, чем, если бы они были бы представлены в других форматах.
Из-за того что данный формат имеет очень много преимуществ он стал применяться не только в JavaScript, но и во многих других языках, таких как C, Ruby, Perl, Python, PHP и т.д.
Сравнение форматов JSON и XML
Формат JSON имеет следующие преимущества перед форматом XML:
- При передаче некоторых данных размер JSON будет значительно меньше, чем размер XML.
- JSON имеет более удобные методы конвертации в структуры данных JavaScript, чем XML.
- JSON более просто создавать, чем XML.
Работа с данными JSON после парсинга осуществляется как с объектом JavaScript.
//JSON var personData = "{"name":"Иван","age":37,"mother":{"name":"Ольга","age":58},"children":["Маша","Игорь","Таня"],"married": true,"dog": null}"; //Объект JavaScript person var person = JSON.parse(personData);
Рассмотрим основные моменты:
//получить значения ключа (свойства) name person.name; person["name"]; //получить значения ключа (свойства) name, находящегося в объекте mother person.mother.name; //удалить элемент age delete(person.age) //добавить (или обновить) ключ (свойство) person.eye = "карие"; //при работе с массивами необходимо использовать методы, предназначенные для работы именно с массивами //удалить 1 элементиз массива (метод splice) person.children.splice(1,1) //добавить элемент в массив (метод push) person.children.push("Катя");
Для перебора элементов в объекте можно использовать цикл for..in:
For (key in person) { if (person.hasOwnProperty(key)) { //ключ = key //значение = person console.log("Ключ = " + key); console.log("Значение = " + person); } // если объект person имеет key (если у person есть свойство key) } // перерабрать все ключи (свойства) в объекте
Для перебора элементов массива можно использовать следующий цикл:
For (var i=0; i
JSON является частью стандарта ECMAScript начиная с 1999 года, когда ECMA определила функцию eval() воспринимающую формат. Он стал набирать популярность вместе с нарастающим успехом Ajax. Слово JSON часто появляется когда кто-нибудь заводит речь об Ajax. Известно, что JSON является другим форматом данных, что он замещает XML, и что многие программисты активно поддерживают его. Но что такое в действительности JSON и в чем его преимущества?
Почему JSON?
Преимущество JSON заключается в том, что он распознается в JavaScript. Нет необходимости разбирать документ, как это происходит с XML, для передачи данных через интернет.
JSON и XML
Преимущества JSON:
- Простой для чтения и понимания.
- Простой для использования.
Преимущества XML:
- Имеет возможности расширения
И XML и JSON имеют возможность интегрировать большой объем данных в бинарной форме.
Синтаксис JSON
Компоненты JSON:
- Объекты: содержат объекты или атрибуты.
- Скалярные переменные: число, строка, логическая переменная.
- Массив.
- Литеральные значения: null , true , false , "строка символов ", и числовые значения.
Объект
Содержит элемент или список элементов, где каждый элемент описывается следующим образом:
"имя" : "значение"
Синтаксис объекта:
{ элемент, элемент, .... }
Массив
Набор значений, разделенных запятой.
[ значение, значение, ....]
Значение
Значение может быть: объектом, массивом, литеральным значением (строка, число, true , false , null ).
Для создания JSON файла больше ничего не нужно!
Пример JSON файла
Простой пример структура меню. В данном объекте содержатся атрибуты и массив, который включает другие объекты строки меню.
{
"menu": "Файл",
"commands": [
{
"title": "Новый",
"action":"CreateDoc"
},
{
"title": "Открыть",
"action": "OpenDoc"
},
{
"title": "Закрыть",
"action": "CloseDoc"
}
]
}
Эквивалент на XML:
Как использовать формат
Файл JSON позволяет загружать данные с сервера или на сервер. Например, сохранение содержимого формы, которая была только что заполнена пользователем. Процесс включает три фазы: обработку браузером, обработку сервером, и обмен данными между ними.
Клиентская часть (браузер)
Данная часть выполняется достаточно просто, так как JSON является частью определения JavaScript. Содержимое файла или определяющих данных назначается переменным и они становятся объектами программы.
Серверная часть
Файл JSON используется различными программными языками, включая PHP и Java , благодаря наличию парсеров, которые позволяют получать содержимое и даже конвертировать его в классы и атрибуты языка. На сайте JSON можно найти парсеры для многих языков программирования.
Обмен данными
- с использованием XMLHttpRequest.
Файл JSON обрабатывается функцией JavaScript eval() . Отправка файла на сервер может быть выполнена с помощью XMLHttpRequest . Файл отправляется как текстовый и обрабатывается парсером языка программирования, который используется на сервере.
Пример
Код XMLHttpRequest:
Var req = new XMLHttpRequest(); req.open("GET", "file.json", true); req.onreadystatechange = myCode; // обработчик req.send(null);
Обработчик JavaScript:
Function myCode() { if (req.readyState == 4) { var doc = eval("(" + req.responseText + ")"); } } Использование данных: var menuName = document.getElementById("jsmenu"); // ищем поле menuName.value = doc.menu.value; // назначаем значение полю Как получать данные: doc.commands.title // читаем значение поля "title" в массиве doc.commands.action // читаем значение поля "action" в массиве
JSON (JavaScript Object Notation – представление объектов JavaScript) – легкий формат представления данных, основанный на подмножестве синтаксиса JavaScript, а точнее на литералах массивов и объектов. JSON – это альтернатива традиционным форматам (обычный текст или XML), которые используются при обмене данными между сервером и клиентом. В отличие от XML и XML-совместимых языков, которые требуют синтаксического анализа, определения JSON могут быть просто включены в сценарии JavaScript. Формат JSON предложен программистом Дугласом Крокфордом (Douglas Crockford).
Может я зайду издалека, но для того чтобы действительно понять JSON, сначала поймем (вспомним) синтаксис массивов и объектов в литеральной нотации JavaScript.
Массивы как литералы
Массив в JavaScript можно определить с помощью конструктора Array, например так:
Var aData = new Array("строка", true, 43, null);
В JavaScript массивы нетипизированные, поэтому в них можно хранить различные типы данных. В примере массив содержит строку, логическое значение, число и значение null.
Массив же, описываемый как литерал, можно определить с помощью квадратных скобок, внутри – значения элементов массива, через запятую. Вот как будет выглядеть тот же самый массив, но в литеральной нотации:
Var aData = ["строка", true, 43, null];
Обращаться к отдельным элемента массива можно указывая имя массива и номер элемента:
Alert(aData); alert(aData);
Объекты как литералы
Объекты в JavaScript определяются с помощью конструктора Object, например так:
Var oAuto = new Object(); oAuto.firm = "Audi"; oAuto.model = "A6"; oAuto.year = 2008; oAuto.price = 78000;
Тот же самый код, но в литеральной нотации будет выглядеть так:
Var oAuto = { "firm":"Audi", "model":"A6", "year":2008, "price":78000 };
Этот код создает объект со свойствами firm, model, year и price и обращаться к ним можно таким образом:
Alert(oAuto.model); alert(oAuto.year);
но можно использовать и синтаксис массивов обращаясь к свойствам объекта таким образом:
Alert(oAuto["model"]); alert(oAuto["year"]);
В литеральной нотации описания массивов и объектов можно вкладывать друг в друга, создавая таким образом объект массивов или массив объектов . Посмотрите этот код:
Var aAuto = [ { "firm":"BMW", "model":"X5", "year":2007, "price":99000 }, { "firm":"Audi", "model":"A6", "year":2008, "price":78000 }, { "firm":"Volkswagen", "model":"Touareg 7L", "year":2006, "price":45000 } ];
Мы создали массив aAuto, который содержит три объекта. Комбинируя синтаксис обращения к массивам с синтаксисом обращения к объектам попробуем получить год выпуска второго автомобиля:
Alert(aAuto.year); // получаем 2008
Можно сделать наоборот, и описать объект массивов:
Var oAuto = { "firm":["BMW", "Audi", "Volkswagen"], "model":["X5", "A6", "Touareg 7L"], "year":, "price": };
в этом случае обращаемся сначала к объекту, а затем к массиву внутри него:
Alert(oAuto.year); // получаем 2008
Вот такое длинное получилось предисловие, но зато теперь будет гораздо понятнее при чем здесь вообще JSON …
JSON – комбинация массивов и объектов и предназначен только для хранения данных. Как следствие, JSON не может иметь переменных и не допускает никаких операций над ними. Давайте попробуем записать предыдущий пример, используя синтаксис JSON :
{ "firm":["BMW", "Audi", "Volkswagen"], "model":["X5", "A6", "Touareg 7L"], "year":, "price": }
Обратите внимание
, что пропали имя переменной и точка-запятая. Передача такого объекта с использованием HTTP-протокола будет происходить очень быстро, поскольку содержит минимум символов. Получив такие данные на стороне клиента и записав ее в какую-либо переменную (например sData) мы получаем строку информации.
Обратите внимание
: именно строку, а совсем не объект или объект с вложенными в него массивами. Преобразуем строку в объект, используя функцию eval()
.
Var oAuto = eval("(" + sData + ")");
В результате этого получится объект, который мы описали чуть выше.
Преимущество JSON перед XML
Так в чем же все-таки состоит преимущество JSON перед XML?
Здесь речь идет исключительно о преимуществах и недостатках только лишь с точки зрения организации обмена данными в Сети.
В том, что язык XML оказывается очень избыточным при сравнении с JSON. Давайте убедимся в этом на простом примере. Одни и те же данные представим в формате XML и в формате JSON.
так это выглядит в формате XML, а ниже – в формате JSON:
{ "general": { "cars":[ { "firm":"BMW", "model":"X5", "year":2007, "price":99000 }, { "firm":"Audi", "model":"A6", "year":2008, "price":78000 }, { "firm":"Volkswagen", "model":"Touareg 7L", "year":2006, "price":45000 } ] } }
При использовании формата JSON выигрыш составит 42 байта, а без учета пробелов и вовсе 86 байт. А если вспомнить еще и о том, что данные в формате JSON не требуют дополнительного синтаксического анализа на стороне клиента – преимущество JSON перед XML в аспекте передачи данных от сервера клиенту становится очевидным…