JSON Tutorial
Вступление
Это вводное руководство по JSON - JavaScript Object Notation. Как веб-разработчик, вы найдете множество случаев, когда вам потребуется применить или работать с JSON в вашем проекте. Этот учебник начинает набор учебников по JSON и обсуждает определение, спецификацию, как выглядит JSON в реальном мире, немного истории JSON, сравнение между Relational Database и JSON, краткое понимание того, когда выбирать JSON вместо Relational Database, XML vs JSON, синтаксис JSON, типичные примеры реального использования JSON.
Документ заканчивается списком того, что вы узнаете в других уроках этой серии, который является своего рода дорожной картой основных вещей, которые вам необходимо изучить для работы с JSON, и кратким описанием обсуждаемых вопросов.
В конечном счете, JSON используется в качестве модели данных, но по сравнению с другими моделями данных, такими как реляционная база данных или XML, он имеет низкую кривую обучения. Фактически, если вы знакомы с любым современным языком программирования (например, PHP, JavaScript, Ruby), вы уже знакомы со структурами данных, используемыми в JSON. Более того, любой современный язык программирования может работать с JSON. Возможно, именно поэтому JSON получил широкое признание со стороны сообщества разработчиков. Следующее визуальное представление от Google Trend может помочь вам понять, как JSON набирает популярность с годами.
Что такое JSON
JSON - это легкий текстовый открытый формат обмена данными. Это читается человеком. JSON происходит от подмножества языка программирования JavaScript (Стандарт ECMA-262, 3-е издание - декабрь 1999 г.). Он полностью независим от языка и может использоваться с большинством современных языков программирования.
JSON часто используется для сериализации и передачи данных по сетевому соединению, например, между веб-сервером и веб-приложением. В информатике сериализация - это процесс преобразования структур данных и объектов в формат, подходящий для хранения в буфере файла или памяти или передачи по сетевому соединению. Позже эти данные могут быть получены. Из-за самой природы JSON он полезен для хранения или представления полуструктурированных данных.
JSON является стандартом и определен в RFC4627 в IETF (Международная инженерная рабочая группа). Спецификация сделана Doglus Crockford в июле 2006 года.
Файлы JSON сохраняются с расширением .json. Тип мультимедиа в Интернете JSON - это «application / json».
Как выглядит JSON
Теперь посмотрим, как выглядит типичный JSON. Следующий фрагмент кода является допустимым (вы увидите в следующей главе, что такое синтаксически допустимый JSON) JSON, представляющий информацию о книге.
{
"Title": "The Cuckoo's Calling",
"Author": "Robert Galbraith",
"Genre": "classic crime novel",
"Detail": {
"Publisher": "Little Brown",
"Publication_Year": 2013,
"ISBN-13": 9781408704004,
"Language": "English",
"Pages": 494
},
"Price": [
{
"type": "Hardcover",
"price": 16.65
},
{
"type": "Kidle Edition",
"price": 7.03
}
]
}
Теперь мы обсудим, каковы основные конструкции JSON.
Основные конструкции
- Существует четыре основных и встроенных типа данных в JSON. Это строки, числа, логические значения (т. Е. Истина и ложь) и ноль. Кроме того, существует два типа данных, которые структурированы - объекты и массивы.
- Объекты заключены в '{' и '}'. Массивы заключены в '[' и ']'. Объекты представляют собой список пар метка-значение. Массивы - это список значений.
- Оба объекта и массива могут быть вложенными.
- В качестве значений могут использоваться строки, числа, логические значения (т. е. истина и ложь) и ноль.
Следующее изображение, а затем следующий текст будут полезны для начала работы с данными JSON.
Таким образом, все содержимое данных JSON, показанных выше, заключено в объект. «Заголовок»: «Призыв кукушки», «Автор»: «Роберт Гэлбрейт», «Жанр»: «классический криминальный роман», это пары метка-значение, разделенные запятыми. Метки и их значения разделяются двоеточием (:). Обратите внимание, что и метки, и значения заключены в кавычки, поскольку они являются строками.
Обратите внимание на метку «Детали». Он содержит другой объект, который снова содержит несколько пар метка-значение. Это пример того, как в JSON выполняется вложение (в данном случае объект внутри объекта).
Затем метка «Цена» содержит массив, который в свою очередь содержит два отдельных объекта. Еще один пример вложенности.
Также обратите внимание, что числа не заключены в кавычки.
История JSON
Имя, стоящее за популяризацией JSON, - Дуглас Крокфорд. Он использовал JSON в своей компании State Software около 2001 года.
В 2005 году Yahoo начала использовать JSON в своих веб-сервисах.
В конце 2006 года Google начал предлагать JSON в своем веб-протоколе Gdata.
На сегодняшний день JSON является одним из наиболее широко используемых форматов обмена данными в сети и поддерживается большинством веб-API (таких как twitter api) для извлечения общедоступных данных и создания из них приложений.
Сравнение с реляционной базой данных
Поскольку JSON используется для размещения / представления данных, мы обсудим, чем они отличаются от традиционной модели реляционной базы данных, используемой в системах RDBMS, таких как MySQL, SQL Server и т. Д. Это может быть полезно для вас, чтобы выбрать JSON вместо RDBMS или RDBMS над JSON в зависимости от на тип и структуру данных, с которыми вы хотите иметь дело. Давайте начнем со сравнения с некоторыми функциями:
- Структура : в реляционной базе данных это таблицы, которые отвечают за хранение данных в виде строк и столбцов. JSON использует объекты и массивы - объекты являются парами метка-значение, а массивы - это список значений. Они могут быть вложены рекурсивно.
- Метаданные : В реляционной базе данных это схема, которая используется для хранения данных о структуре и типе данных, которые должны быть сохранены, и схемы предопределены, т.е. они создаются во время создания базы данных и таблиц, прежде чем вы сможете хранить данные. JSON также может использовать схему для определения структуры и типа представляемых данных, но это не предопределено. Большую часть времени он описывает себя, даже если он использует схему, он обладает гораздо большей гибкостью, чем схема, используемая в реляционной базе данных. Но было бы целесообразно сказать, что это преимущество JSON перед реляционной базой данных. Наличие заранее определенной схемы может иметь несколько преимуществ в зависимости от данных, с которыми необходимо иметь дело.
- Извлечение данных . Реляционные базы данных используют язык структурированных запросов, выразительный и очень мощный язык, основанный на реляционной алгебре, для извлечения данных из базы данных. JSON не имеет широко распространенного или общепринятого языка для запроса сохраненных данных. JAQL и JSONiq - это многие из языков запросов, которые в основном находятся в стадии разработки для запроса данных из JSON.
- Сортировка : SQL выполняет свою работу в случае реляционной базы данных. В случае JSON, поскольку в программах часто используются массивы, массивы можно сортировать.
- Приложение . Существует множество систем с открытым исходным кодом, а также коммерческие системы реляционных баз данных, такие как MySQL, POstgreSQL, SQL Server, Oracle, DB2 и т. Д. JSON в основном применяется для языков программирования. Но есть и системы NoSQL. Системы NoSQL используют формат JSON для хранения данных. Некоторые из систем NoSQL используют формат JSON: MongoDB, CoucheDB и т. Д.
- Кривая обучения : JSON здесь явный победитель. Поскольку используемые здесь базовые типы данных и структура аналогичны тем, которые используются во многих языках программирования, очевидно, что если вы пришли из опыта программирования, вы довольно быстро освоите JSON. СУБД - это отдельная область исследований, с другой стороны. Но определенно время, потраченное на изучение реляционной базы данных, принесет вам несколько возможностей и преимуществ.
Теперь давайте обсудим несколько вариантов использования, которые будут полезны.
Предположим, что вы должны хранить информацию о студентах (имя, идентификатор, класс) и оценки, полученные ими по различным предметам. Реляционная база данных здесь удобнее, чем использование JSON, поскольку здесь мы можем иметь одну таблицу, содержащую сведения об ученике, и другую таблицу с оценками, полученными ими по различным предметам.
Теперь предположим, что мы должны представить информацию о студентах (имя, идентификатор, класс) и различных проектах, которые они выполнили по различным предметам, вместе с кратким описанием проекта. Предположим, что учащийся может выполнить любое количество проектов и любое количество предметов по своему выбору. Обратите внимание, что в этом случае у вас может быть единообразие данных, которые будут сохранены. Таким образом, в этом случае JSON будет предпочтительнее, чем использование реляционной базы данных.
JSON против XML
Поскольку XML также широко используется в качестве формата обмена данными, мы постараемся провести сравнение между ними. Цель сравнения не в том, что лучше, а в том, что мы попытаемся понять, какой из них подходит для хранения данных определенного типа.
- XML более выразителен, чем JSON. XML иногда также страдает от многократного использования тегов, поскольку JSON гораздо более лаконичен.
- XML сложнее, чем JSON.
- Существует несколько спецификаций для определения схемы (метаданных) для XML, например DTD и XSD. Схема JSON предназначена для того же, что и для JSON, но она не так широко используется, как схемы XML.
- XML может использоваться с большинством языков программирования как JSON. Но дело в том, что когда вы работаете с XML, то вы фактически пытаетесь сопоставить две системы, эти структуры данных различны. Однако в случае JSON, поскольку объекты и массивы являются основными используемыми структурами данных, с ними легко работать в программах.
- Для выбора определенных частей документа XML существует стандартная спецификация под названием XPath. Это широко используется. В JSON у нас есть JSONPath для того же, но не широко используемого.
- XML имеет спецификацию Xquery для запроса данных XML. У JSON есть JAQL, JSONiq и т. Д., Но они не используются широко.
- XML имеет спецификацию XSLT, которую можно использовать для применения стиля к документу XML. У JSON нет такой вещи.
Типичное использование JSON
API : API является наиболее широко используемой областью, где JSON используется для обмена данными. В частности, у веб-приложений, имеющих социальное лицо, теперь стало очевидным, что у них есть API, так что разработчики могут использовать огромное количество данных, собираемых приложением, а затем создавать производные приложения. Твиттер, Facebook, Linkedin, Flicker, Dribble, вы называете его, все известные сегодня приложения в Интернете имеют API и используют JSON в качестве предпочтительного формата для предоставления данных разработчикам. Из этих API некоторые поддерживают как JSON, так и XML, но некоторые поддерживают только JSON.
Мы увидим простую демонстрацию API Rottentomatoes, чтобы понять, как JSON используется в API. В этой демонстрации мы запрашиваем у rottentomatoes.com название и плакат с миниатюрами фильма, содержащего строку «Жизнь прекрасна», используя JavaScript и Jquery. Возвращает результат в формате JSON, а затем отображается в браузере. Ниже приведен скриншот этого.
NoSQL : это еще одна область, где используется JSON. Базы данных NoSQL, такие как MongoDb, CouchDb использует формат JSON для хранения данных.
Поскольку структуры JSON могут быть преобразованы в объекты JavaScript в среде браузера, с ним очень легко работать. Более того, он также может быть интегрирован с серверным JavaScript. Ниже показано, что в MongoDb данные хранятся в формате JSON (точнее, используется вариант JSON, называемый BSON). Вы можете изучить MongoDb подробно в нашем отдельном руководстве для MongoDb .
Сначала мы выбираем базу данных. Наше имя базы данных здесь w3r_demo.
> use w3r_demo
switched to db w3r_demo
Теперь мы вставим некоторые данные в коллекцию (например, таблицу в RDBMS) книг. Вводимые нами данные показаны в примере данных JSON выше в этом примере.
> db.books.save({
"Title": "The Cuckoo's Calling",
"Author": "Robert Galbraith",
"Genre": "classic crime novel",
"Detail": {
"Publisher": "Little Brown",
"Publication_Year": 2013,
"ISBN-13": 9781408704004,
"Language": "English",
"Pages": 494
},
"Price": [
{
"type": "Hardcover",
"price": 16.65
},
{
"type": "Kidle Edition",
"price": 7.03
}
]
}
)
Мы выберем данные вставки и отображения сейчас.
> db.books.find()
{"_id" : ObjectId("51ee7088b63a0c553918fdd3"), "Title": "The Cuckoo's Calling", "Author": "Robert Galbraith", "Genre": "classic crime novel",
"Detail": { "Publisher": "Little Brown", "Publication_Year": 2013, "ISBN-13": 9781408704004, "Language": "English", "Pages": 494},
"Price": [ { "type": "Hardcover", "price": 16.65 }, { "type": "Kidle Edition", "price": 7.03 } ] }
Таким образом, мы храним данные в формате JSON в базе данных NoSQL MongoDb.
AJAX : JSON часто используется для получения данных с сервера с помощью AJAX. Это подходит, потому что таким образом извлеченные данные представляются в среду браузера, а затем с помощью JavaScript можно манипулировать и отображать.
В следующей демонстрации мы используем Jquery и AJAX, чтобы получить последние 5 фотографий кошек из Flicker. Мы можем посмотреть живую демонстрацию здесь . И следующий скриншот.
Управление пакетами. Поскольку сложность веб-разработки значительно возросла, разработчики в настоящее время используют инструменты для создания пакета своего приложения. Это делает приложение более простым в развертывании, и в дальнейшем его также легко вносить изменения и интегрировать изменения. Таким образом, процесс разработки и сопровождения становится проще. Доступно множество инструментов управления пакетами, а именно Bower, Yomen, NPM (Node Package Manager) и т. Д. Большинство из этих инструментов используют файл package.json, в котором находятся метаданные (например, имя, версия, описание, структура файла, зависимости, лицензия). информация и т. д.) написаны.
Ниже приведен файл package.json из Twitter Bootstrap.
{
"name": "bootstrap"
, "description": "Sleek, intuitive, and powerful front-end framework for faster and easier web development."
, "version": "2.3.2"
, "keywords": ["bootstrap", "css"]
, "homepage": "http://twitter.github.com/bootstrap/"
, "author": "Twitter Inc."
, "scripts": { "test": "make test" }
, "repository": {
"type": "git"
, "url": "https://github.com/twitter/bootstrap.git"
}
, "licenses": [
{
"type": "Apache-2.0"
, "url": "http://www.apache.org/licenses/LICENSE-2.0"
}
]
, "devDependencies": {
"uglify-js": "1.3.4"
, "jshint": "0.9.1"
, "recess": "1.1.8"
, "connect": "2.1.3"
, "hogan.js": "2.0.0"
}
}
Итак, вы уже можете иметь представление о том, как JSON используется в реальном мире, и вам будет полезно хорошо изучить JSON, чтобы вы могли использовать его в своих собственных проектах.
Что вы узнаете в руководствах по JSON в w3resource
Вот краткое изложение учебников, которые вы встретите в нашей серии руководств по JSON.
- Подробное обсуждение структур данных и значений, которые вы можете использовать в JSON.
- Различные инструменты, которые вы можете использовать для просмотра JSON онлайн .
- Как использовать JSONLint для проверки JSON .
- Несколько примеров с объяснениями JSON .
- Работа с PHP и JSON . Мы обсудили установку, как различные функции PHP, чтобы изучить возможности JSON.
- Работа с JavaScript и JSON . JSON - это встроенный объект в JavaScript. Мы обсудили, как преобразовать JSON в строку и строку в JSON.
- Чтобы выбрать определенные части данных JSON, вы можете использовать JSON Path . Мы обсудили, как использовать JavaScript и PHP для работы с JSON Path.
- Если вы отправляете запрос для извлечения данных, находящихся в домене, отличном от домена, из которого отправляется запрос, вы должны использовать JSONP, чтобы преодолеть узкое место междоменного совместного использования ресурсов. Мы обсудили JSONP в отдельном руководстве в этой серии.
- Мы также обсудили BSON , вариант JSON, используемый в MongoDb для хранения данных.
Заключение
Будет хорошей идеей кратко рассказать о том, что мы узнали из этого вводного руководства по JSON. вот так-
- JSON - это открытый, облегченный текстовый формат обмена данными, определенный как RFC4627, который появился в мире разработчиков в 2005 году, и его популярность быстро растет.
- JSON использует Object и Array в качестве структур данных и строк, число, true, false и null в качестве значений. Объекты и массивы могут быть вложены рекурсивно.
- Большинство (если не все) современные языки программирования могут использоваться для работы с JSON.
- Базы данных NoSQL, разработанные для устранения узких мест в реляционных базах данных, используют JSON для хранения данных.
- JSON дает разработчикам возможность выбирать между XML и JSON, что обеспечивает большую гибкость.
- Помимо NoSQL, AJAX, управление пакетами и интеграция API-интерфейсов с веб-приложением являются основными областями, в которых широко используется JSON.
Надеемся, что это руководство хорошо подготовит почву для изучения JSON с помощью наших последующих руководств. Кстати, мы находимся в процессе серьезного обновления наших нынешних учебных пособий по JSON, будет добавлено более полезное содержимое, чтобы предоставить нашим пользователям более качественный и улучшенный учебный материал. Подпишитесь на нашу RSS ленту, чтобы оставаться в курсе.
Далее: Структуры JSON
Новый контент: Composer: менеджер зависимостей для PHP , R программирования