Вступление
Поскольку * JSON * является производным от языка программирования JavaScript, это естественный выбор для использования в качестве формата данных в JavaScript. JSON, сокращение от * JavaScript Object Notation *, обычно произносится как имя «Jason».
Чтобы узнать больше о JSON в общих чертах, прочитайте учебник «https://www.digitalocean.com/community/tutorials/an-introduction-to-json[An Введение в JSON]».
Чтобы начать думать о том, где вы можете использовать JSON в своих программах JavaScript, вот некоторые общие примеры использования JSON:
-
Хранение данных
-
Генерация структур данных из пользовательского ввода
-
Передача данных с сервера на клиент, с клиента на сервер и с сервера на сервер
-
Конфигурирование и проверка данных
Из этого туториала вы узнаете, как работать с JSON в JavaScript. Чтобы максимально использовать это введение, вы должны быть немного знакомы с языком программирования JavaScript.
JSON формат
Формат JSON получен из синтаксиса объектов JavaScript, но он полностью основан на тексте. Это формат данных ключ-значение, который обычно отображается в фигурных скобках.
Когда вы работаете с JSON, вы, скорее всего, увидите объекты JSON в файле + .json
, но они также могут существовать в виде объекта или строки JSON в контексте программы. Подробнее о syntax и структуре читайте здесь.
Когда вы работаете с файлом + .json
, он будет выглядеть так:
sammy.json
{
"first_name" : "Sammy",
"last_name" : "Shark",
"online" : true
}
Если вместо этого у вас есть объект JSON в файле + .js +
или + .html +
, вы, скорее всего, увидите, что он установлен в переменную:
var sammy = {
"first_name" : "Sammy",
"last_name" : "Shark",
"online" : true
}
Кроме того, вы можете видеть JSON в виде строки, а не объекта в контексте программного файла JavaScript или сценария. В этом случае вы также можете увидеть все это в одной строке:
var sammy = '{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}';
Преобразование объектов JSON в строки может быть особенно полезно для быстрой передачи данных.
Мы рассмотрели общий формат JSON и то, как вы можете увидеть его в виде файла "+ .json +" или в JavaScript в качестве объекта или строки.
Сравнение с JavaScript-объектом
Стоит помнить, что JSON был разработан для использования любым языком программирования, в то время как объекты JavaScript могут работать только непосредственно через язык программирования JavaScript.
С точки зрения синтаксиса объекты JavaScript похожи на JSON, но ключи в объектах JavaScript не являются строками в кавычках. Кроме того, объекты JavaScript менее ограничены с точки зрения типов, передаваемых значениям, поэтому они могут использовать функции в качестве значений.
Давайте рассмотрим пример объекта JavaScript пользователя веб-сайта Сэмми Шарк, который в данный момент находится в сети.
var user = {
first_name: "Sammy",
last_name : "Shark",
online : true,
full_name : function() {
return this.first_name + " " + this.last_name;
}
};
Это будет выглядеть очень знакомо вам как объект JSON, но нет никаких кавычек ни по одному из ключей (+ first_name +
, + last_name +
, + online +
или + full_name +
), * и * есть значение функции в последней строке.
Если мы хотим получить доступ к данным в объекте JavaScript выше, мы могли бы использовать https://www.digitalocean.com/community/tutorials/how-to-work-with-json-in-javascript#accessing-json-data [ точечная нотация] для вызова + user.first_name; +
и получения строки, но если мы хотим получить доступ к полному имени, нам нужно сделать это, вызвав + user.full_name (); +
, потому что это функция.
Объекты JavaScript могут существовать только в языке JavaScript, поэтому, когда вы работаете с данными, к которым должны обращаться различные языки, лучше всего выбрать JSON.
Доступ к данным JSON
Данные JSON обычно доступны в Javascript через точечные обозначения. Чтобы понять, как это работает, давайте рассмотрим объект JSON + sammy +
:
var sammy = {
"first_name" : "Sammy",
"last_name" : "Shark",
"online" : true
}
Чтобы получить доступ к любому из значений, мы будем использовать точечную запись, которая выглядит следующим образом:
sammy.first_name
sammy.last_name
sammy.online
Сначала стоит переменная + sammy +
, за которой следует точка, за которой следует ключ для доступа.
Чтобы создать предупреждение JavaScript, которое показывает нам значение, связанное с ключом + first_name +
во всплывающем окне, мы можем сделать это, вызвав функцию JavaScript + alert () +
:
alert(sammy.first_name);
OutputSammy
Здесь мы успешно вызвали значение, связанное с ключом + first_name +
, из объекта JSON + sammy +
.
Мы также можем использовать синтаксис в квадратных скобках для доступа к данным из JSON. Чтобы сделать это, мы должны держать ключ в двойных кавычках в квадратных скобках. Для нашей переменной + sammy +
, приведенной выше, использование синтаксиса в квадратных скобках в функции + alert () +
выглядит следующим образом:
alert(sammy["online"]);
Outputtrue
Когда вы работаете с элементами массива nested, вам следует вызывать номер элемента в вашем массиве. Давайте рассмотрим JSON ниже:
var user_profile = {
"username" : "SammyShark",
"social_media" : [
{
"description" : "twitter",
"link" : "https://twitter.com/digitalocean"
},
{
"description" : "facebook",
"link" : "https://www.facebook.com/DigitalOceanCloudHosting"
},
{
"description" : "github",
"link" : "https://github.com/digitalocean"
}
]
}
Чтобы получить доступ к строке + facebook +
, мы можем вызвать этот элемент в массиве в контексте точечной нотации:
alert(user_profile.social_media[1].description);
Outputfacebook
Обратите внимание, что для каждого вложенного элемента мы будем использовать дополнительную точку.
Использование точечной нотации или синтаксиса в квадратных скобках позволяет нам получить доступ к данным, содержащимся в формате JSON.
Функции для работы с JSON
В этом разделе будут рассмотрены два метода для строкового преобразования и анализа JSON. Возможность преобразования JSON из объекта в строку и наоборот полезна для передачи и хранения данных.
JSON.stringify ()
Функция + JSON.stringify () +
преобразует объект в строку JSON.
Строки полезны для передачи данных от клиента на сервер посредством простого хранения или передачи информации. Например, вы можете собрать пользовательские настройки на стороне клиента и затем отправить их на сервер. Позже вы можете прочитать информацию с помощью метода + JSON.parse () +
и работать с данными по мере необходимости.
Мы рассмотрим объект JSON, который мы присваиваем переменной + obj +
, а затем преобразуем его с помощью + JSON.stringify () +
, передав + obj +
функции. Мы можем присвоить эту строку переменной + s +
:
var obj = {"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}
var s = JSON.stringify(obj)
Теперь, если мы будем работать с + s +
, у нас будет JSON в виде строки, а не объекта.
'{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}'
Функция + JSON.stringify () +
позволяет нам преобразовывать объекты в строки. Чтобы сделать обратное, мы рассмотрим функцию + JSON.parse () +
.
JSON.parse ()
Строки полезны для транспортировки, но вы захотите иметь возможность преобразовать их обратно в объект JSON на стороне клиента и / или сервера. Хотя вы можете конвертировать текст в объект с помощью функции + eval () +
, он не очень безопасен, поэтому вместо него мы будем использовать функцию + JSON.parse () +
.
Чтобы преобразовать пример в https://www.digitalocean.com/community/tutorials/how-to-work-with-json-in-javascript/#functions-for-working-with-json [JSON.stringify () ] выше, мы передадим строку + s +
в функцию и присвоим ее новой переменной:
var o = JSON.parse(s)
Тогда у нас будет объект + o +
для работы, который будет идентичен объекту + obj +
.
Чтобы глубже взглянуть, давайте рассмотрим пример + JSON.parse () +
в контексте файла HTML:
<!DOCTYPE html>
<html>
<body>
<p id="user"></p>
<script>
var s = '{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}';
var obj = JSON.parse(s);
document.getElementById("user").innerHTML =
"Name: " + obj.first_name + " " + obj.last_name + "<br>" +
"Location: " + obj.location;
</script>
</body>
</html>
OutputName: Sammy Shark
Location: Ocean
В контексте HTML-файла мы можем увидеть, как строка JSON + s +
преобразуется в объект, который можно получить при окончательном отображении страницы с помощью https://www.digitalocean.com/community/tutorials/how. -to-work-with-json-in-javascript # accessing-json-data [доступ к JSON] через точечную запись.
+ JSON.parse () +
- это безопасная функция для анализа строк JSON и преобразования их в объекты.
Заключение
JSON является естественным форматом для использования в JavaScript и имеет много реализаций, доступных для использования во многих популярных языках программирования. Если вы хотите использовать формат на другом языке программирования, вы можете увидеть полную языковую поддержку на сайте «http://www.json.org/[Introduction JSON]».
Поскольку он является легковесным и легко переносится между языками программирования и системами, в JSON наблюдается повышенная поддержка API, включая https://www.digitalocean.com/community/tutorials/how-to-create-a-twitter-app. [Twitter API].
Скорее всего, вы не будете создавать свои собственные файлы + .json +
, а будете получать их из других источников. Вы можете просмотреть эти resources, чтобы узнать о преобразовании других структур данных в JSON.