SlideShare a Scribd company logo
JSON
JavaScript Object Notation
JSON – це синтаксис для зберігання даних і обміну даними.
JSON легко читається людиною.
Обмін даними
При обміні даними між браузером і сервером дані можуть
бути тільки текстовими.
JSON є текстом і ми можемо конвертувати будь-який
JavaScript об’єкт у JSON, а потім передати JSON на сервер.
Ми також можемо конвертувати будь-який JSON, отриманий
з сервера, у JavaScript об’єкт.
Таким чином ми можемо працювати з даними як з JavaScript
об’єктами, без складного парсингу і перетворень.
JSON синтаксис
Синтаксис JSON є підвидом синтаксису JavaScript.
Правила:
Дані подаються парами ім‘я/значення: "name":"value"
Дані розділяються комами
Об’єкти поміщаються в фігурні дужки {…}
Масиви поміщаються в квадратні дужки […]
Приклад подачі даних:
{"name":"Вася","age":28}
Ключі і рядкові величини повинні бути в подвійних
лапках.
У JavaScript можна було б подати так:
{"name":'Вася','age':28}
Операції з об’єктами
Приклад створення об’єкта у JavaScript:
var person = { "name":"Вася", "age":28,
"city":"Луцьк" };
Доступ до властивостей об’єктів:
alert(person.name); // Вася
або
alert(person["name"]); // Вася
Зміна даних:
person.name = "Коля";
або
person["name"] = "Коля";
JavaScript об’єкти можуть використовуватись як JSON, це
саме стосується масивів.
JSON і XML
Дані зручно зберігати як у форматі XML, так і у JSON.
Приклад XML:
<employees>
<employee>
<firstName>John</firstName>
<lastName>Doe</lastName>
</employee>
<employee>
<firstName>Anna</firstName>
<lastName>Smith</lastName>
</employee>
<employee>
<firstName>Peter</firstName>
<lastName>Jones</lastName>
</employee>
</employees>
Приклад JSON
{"employees":[
{ "firstName":"John",
"lastName":"Doe" },
{ "firstName":"Anna",
"lastName":"Smith" },
{ "firstName":"Peter",
"lastName":"Jones" }
]}
Подібності JSON і XML:
• JSON і XML – формати з “самоописом”
(зручні для сприйняття людиною)
• JSON і XML мають ієрархічну структуру
(величини всередині величин)
• JSON і XML сприймаються дуже
багатьма мовами програмування
• JSON і XML можна передавати через
XMLHttpRequest
Відмінності JSON і XML:
•JSON не використовує тегів
•JSON коротший
•JSON швидше читати і писати
•JSON може використовувати масиви
Головне:
XML повинен парситись XML парсером, а
JSON можна парсити стандартними
функціями JavaScript.
Про відмінності JSON і JavaScript:
var myObj = { "name":"Вася", "age":31,
"city":"Луцьк" };
alert(myObj); // [object Object]
var myJSON = JSON.stringify(myObj);
alert(myJSON); //
{"name":"Вася","age":31,"city":
"Луцьк"}
Типи даних у JSON:
• рядкові
• числові
• об’єкти (JSON об’єкти)
• масиви
• логічні (true/false)
• null
Не можуть бути даними у JSON:
• функції
• дати (date)
• undefined
Величинами у JSON можуть бути JSON
об’єкти (подані за належним синтаксисом).
Наприклад:
{
"employee":{ "name":"Вася",
"age":28, "city":"Луцьк" }
}
Таблиці у JSON:
{
"employees":[ "Вася", "Коля", "Маруся" ]
}
Операції з об’єктами
Доступ через крапковий синтаксис:
myObj = { "name":"Вася", "age":30, "car":null };
x = myObj.name;
або через []:
x = myObj["name"];
Перебір властивостей:
for (x in myObj) {
demo.innerHTML += x + "<br>";
}
Для доступу до значень властивостей можна
використати квадратні дужки:
var myObj = { "name":"Вася", "age":28, "car":null };
for (x in myObj) {
demo.innerHTML += myObj[x] + "<br>";
}
Вкладені об’єкти:
myObj = {
"name":"Вася",
"age":28,
"cars": {
"car1":"Ford","car2":"BMW","car3":"Fiat"
}
}
x = myObj.cars.car2; //або:
x = myObj.cars["car2"];
Аналогічно можна змінювати величини в
JSON об‘єктах:
myObj.cars.car2 = "Mercedes";
або
myObj.cars["car2"] = "Mercedes";
Видалення властивостей:
delete myObj.cars.car2;
Масиви в JSON
Допустимі типи даних у JSON масивах:
string, number, object, array,
boolean, null
У JavaScript – все перераховане плюс
функції, дати і undefined.
Масиви можуть бути значеннями
властивостей JSON об’єктів
{
"name":"John",
"age":30,
"cars":[ "Ford", "BMW", "Fiat" ]
}
Значення з масиву можна отримати (чи
змінити) через індекс:
<p id="demo"></p>
<script>
var myObj, x;
myObj = {
"name":"Вася",
"age":28,
"cars":[ "Ford", "BMW", "Fiat" ]
};
x = myObj.cars[0];
demo.innerHTML = x; // Ford
</script>
Цикли по масивах:
for (i in myObj.cars) {
x += myObj.cars[i];
}
або
for (i = 0; i <
myObj.cars.length; i++) {
x += myObj.cars[i];
}
Величини в масивах можуть бути іншими масивами
або навіть іншими JSON об’єктами:
myObj = {
"name":"John",
"age":30,
"cars": [
{ "name":"Ford", "models":[
"Fiesta", "Focus", "Mustang" ] },
{ "name":"BMW", "models":[
"320", "X3", "X5" ] },
{ "name":"Fiat", "models":[
"500", "Panda" ] }
]
}
Перебір значень у випадку вкладених об’єктів:
<p id="demo"></p>
<script>
var myObj, i, j, x = "";
myObj = {
"name":"Вася",
"age":28,
"cars": [
{ "name":"Ford", "models":[ "Fiesta", "Focus",
"Mustang" ] },
{ "name":"BMW", "models":[ "320", "X3", "X5" ] },
{ "name":"Fiat", "models":[ "500", "Panda" ] }
]
}
for (i in myObj.cars) {
x += "<h2>" + myObj.cars[i].name + "</h2>";
for (j in myObj.cars[i].models) {
x += myObj.cars[i].models[j] + "<br>";
}
}
demo.innerHTML = x;
</script>
Видалення елементів масивів:
delete myObj.cars[1];
Задача 85.0
Відкрийте файл books.xml (доступний тут:
goo.gl/KQwAqs ) і створіть за цими даними
об’єкт catalog.
Виведіть дані з об’єкта на сторінку.
Розв’язок
<p id="info"></p>
<script>
var x = "";
var catalog = {
"books": [
{ "author":"Умберто Еко", "title":"Бавдоліно", "pages":
444},
{ "author":"Салман Рушді", "title":"Джозеф Антон",
"pages": 728},
{ "author":"Юрій Виничук", "title":"Чорт зна що",
"pages": 792},
{ "author":"Герман Гессе", "title":"Гра в бісер",
"pages": 510}
]
}
for (i in catalog.books) {
x += "<h2>" + catalog.books[i].author + "</h2>";
x += "<p>" + catalog.books[i].title + ", сторінок: " +
catalog.books[i].pages + "</p>";
}
info.innerHTML = x;
</script>
Задача 85.1
Додайте кнопки “Видалити першу книгу” і
“Видалити останню книгу” з відповідними
діями над об’єктом.
Розв’язок
<button onclick="deleteFirstBook()">Видалити першу книгу</button>
<button onclick="deleteLastBook()">Видалити останню книгу</button>
<script>
var x;
var catalog = { } // див. вище
showBook();
function showBook(){
x = "";
for (i in catalog.books) {
x += "<h2>" + catalog.books[i].author + "</h2>";
x += "<p>" + catalog.books[i].title + ", сторінок: " +
catalog.books[i].pages + "</p>";
}
info.innerHTML = x;
}
function deleteFirstBook(){
delete catalog.books[0];
showBook();
}
function deleteLastBook(){
delete catalog.books[catalog.books.length-1];
showBook();
}
</script>
JSON.parse()
JSON зазвичай використовується для
обміну даними з сервером.
При отриманні даних з сервера вони
завжди мають рядковий тип.
Якщо застосувати до даних JSON.parse(),
вини стануть JavaScript об’єктом.
Наприклад, ми отримуємо з сервера дані у
формі:
'{ "name":"Вася", "age":28,
"city":"Луцьк"}'
Використаємо JavaScript функцію
JSON.parse() щоб ковертувати текст у
JavaScript об’єкт:
var obj = JSON.parse('{
"name":"Вася", "age":28,
"city":"Луцьк"}');
Слід уважно дотримуватись синтаксису
JSON!
Приклад взаємодії JSON і AJAX.
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 &&
this.status == 200) {
myObj =
JSON.parse(this.responseText);
demo.innerHTML = myObj.name;
}
};
xhttp.open("GET", "json_demo.txt",
true);
xhttp.send();
Вміст файлу json_demo.txt:
{
"name":"John",
"age":31,
"pets":[
{ "animal":"dog", "name":"Fido"
},
{ "animal":"cat", "name":"Felix"
},
{ "animal":"hamster",
"name":"Lightning" }
]
}
JSON.stringify()
Для конвертування JavaScript об’єкта у
рядкову величину використовується
JSON.stringify() .
Приклад:
<p id="demo"></p>
<script>
var obj = { "name":"Вася", "age":28,
"city":"Луцьк"};
var myJSON = JSON.stringify(obj);
demo.innerHTML = myJSON;
</script>
Аналогічно можна діяти з масивами:
<p id="demo"></p>
<script>
var arr = [ "Вася", "Коля", "Маруся",
"Люба" ];
var myJSON = JSON.stringify(arr);
demo.innerHTML = myJSON;
</script>
Stringify перетворює дані в рядки, а
функції просто видаляє.
<p id="demo"></p>
<script>
var obj = { "name":"Вася",
"age":function () {return 28;},
"city":"Луцьк", "date": new Date()};
var myJSON = JSON.stringify(obj);
demo.innerHTML = myJSON;
</script>
Виводить:
{"name":"Вася","city":"Луцьк","date":"
2017-07-19T11:34:00.181Z"}

More Related Content

More from Олег Вілігурський

More from Олег Вілігурський (20)

Theme23-oop2
Theme23-oop2Theme23-oop2
Theme23-oop2
 
Theme22-OOP
Theme22-OOPTheme22-OOP
Theme22-OOP
 
Theme20_ajax
Theme20_ajaxTheme20_ajax
Theme20_ajax
 
Theme19_css
Theme19_cssTheme19_css
Theme19_css
 
Theme18_css
Theme18_cssTheme18_css
Theme18_css
 
Theme17a css
Theme17a cssTheme17a css
Theme17a css
 
Theme17
Theme17Theme17
Theme17
 
Theme16
Theme16Theme16
Theme16
 
Coding for Future in Lutsk. JavaScript. Part 15
Coding for Future in Lutsk. JavaScript. Part 15Coding for Future in Lutsk. JavaScript. Part 15
Coding for Future in Lutsk. JavaScript. Part 15
 
Coding for Future in Lutsk. JavaScript. Part 14
Coding for Future in Lutsk. JavaScript. Part 14Coding for Future in Lutsk. JavaScript. Part 14
Coding for Future in Lutsk. JavaScript. Part 14
 
Coding for Future in Lutsk. JavaScript. Part 13
 Coding for Future in Lutsk. JavaScript. Part 13 Coding for Future in Lutsk. JavaScript. Part 13
Coding for Future in Lutsk. JavaScript. Part 13
 
Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12Coding for Future in Lutsk. JavaScript. Part 12
Coding for Future in Lutsk. JavaScript. Part 12
 
Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11Coding for Future in Lutsk. JavaScript. Part 11
Coding for Future in Lutsk. JavaScript. Part 11
 
Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10Coding for Future in Lutsk. JavaScript. Part 10
Coding for Future in Lutsk. JavaScript. Part 10
 
Coding for Future in Lutsk. JavaScript. Part 9
Coding for Future in Lutsk. JavaScript. Part 9Coding for Future in Lutsk. JavaScript. Part 9
Coding for Future in Lutsk. JavaScript. Part 9
 
Coding for Future in Lutsk. JavaScript. Part 8
Coding for Future in Lutsk. JavaScript. Part 8Coding for Future in Lutsk. JavaScript. Part 8
Coding for Future in Lutsk. JavaScript. Part 8
 
Coding for Future in Lutsk. JavaScript. Part 7
Coding for Future in Lutsk. JavaScript. Part 7Coding for Future in Lutsk. JavaScript. Part 7
Coding for Future in Lutsk. JavaScript. Part 7
 
Coding for Future in Lutsk. JavaScript. Part 6
Coding for Future in Lutsk. JavaScript. Part 6Coding for Future in Lutsk. JavaScript. Part 6
Coding for Future in Lutsk. JavaScript. Part 6
 
Coding for Future in Lutsk. JavaScript. Part 5
Coding for Future in Lutsk. JavaScript. Part 5Coding for Future in Lutsk. JavaScript. Part 5
Coding for Future in Lutsk. JavaScript. Part 5
 
Coding for Future in Lutsk. JavaScript. Part 4
Coding for Future in Lutsk. JavaScript. Part 4Coding for Future in Lutsk. JavaScript. Part 4
Coding for Future in Lutsk. JavaScript. Part 4
 

Recently uploaded

Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
santomihail264
 
Сучасний підхід до підвищення продуктивності сільськогосподарских рослин
Сучасний підхід до підвищення продуктивності сільськогосподарских рослинСучасний підхід до підвищення продуктивності сільськогосподарских рослин
Сучасний підхід до підвищення продуктивності сільськогосподарских рослин
tetiana1958
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
tetiana1958
 
Симон Петлюра – видатний борець за незалежність
Симон Петлюра – видатний борець за незалежністьСимон Петлюра – видатний борець за незалежність
Симон Петлюра – видатний борець за незалежність
Vinnytsia Regional Universal Scientific Library named after Valentin Otamanovsky
 

Recently uploaded (17)

Цифровий університет - Відкрита українська ініціатива(DigiUni)
Цифровий університет - Відкрита українська ініціатива(DigiUni)Цифровий університет - Відкрита українська ініціатива(DigiUni)
Цифровий університет - Відкрита українська ініціатива(DigiUni)
 
Графіки стабілізаційних відключень у Рівненській області
Графіки стабілізаційних відключень у Рівненській областіГрафіки стабілізаційних відключень у Рівненській області
Графіки стабілізаційних відключень у Рівненській області
 
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
«Слова і кулі». Письменники, що захищають Україну. Єлизавета Жарікова
 
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
Презентація-Поняття-про-глобальні-проблеми-людства.-Роль-світової-громадськос...
 
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdfПідсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
Підсумки, перспективи роботи профспільнот педагогів ЗДО (2).pdf
 
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdfKUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
KUDRIAVTSEVA_Olha_PORTFOLIO_librarian.pdf
 
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdfLOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
LOBANOVA_Tetiana_PORTFOLIO_Librarian.pdf
 
Сучасний підхід до підвищення продуктивності сільськогосподарских рослин
Сучасний підхід до підвищення продуктивності сільськогосподарских рослинСучасний підхід до підвищення продуктивності сільськогосподарских рослин
Сучасний підхід до підвищення продуктивності сільськогосподарских рослин
 
29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx29.05.2024.docx
29.05.2024.docx29.05.2024.docx29.05.2024.docx
 
Албанія
АлбаніяАлбанія
Албанія
 
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdfPOPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
POPOVICH_Nina_PORTFOLIO_librarianCRE.pdf
 
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
Важливість впровадження стандарту ISO/IEC 17025:2019 у процес державних випро...
 
Роберт Льюїс Л.Стівенсон. Біографічна довідка
Роберт Льюїс Л.Стівенсон. Біографічна довідкаРоберт Льюїс Л.Стівенсон. Біографічна довідка
Роберт Льюїс Л.Стівенсон. Біографічна довідка
 
Стабілізаційні графіки відключень світла у Рівному
Стабілізаційні графіки відключень світла у РівномуСтабілізаційні графіки відключень світла у Рівному
Стабілізаційні графіки відключень світла у Рівному
 
Р.Л.Стівенсон. Презентація життєвого шляху
Р.Л.Стівенсон. Презентація життєвого шляхуР.Л.Стівенсон. Презентація життєвого шляху
Р.Л.Стівенсон. Презентація життєвого шляху
 
Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»Віртуальна виставка «Допомога НАТО Україні»
Віртуальна виставка «Допомога НАТО Україні»
 
Симон Петлюра – видатний борець за незалежність
Симон Петлюра – видатний борець за незалежністьСимон Петлюра – видатний борець за незалежність
Симон Петлюра – видатний борець за незалежність
 

Theme21_json

  • 2. JSON – це синтаксис для зберігання даних і обміну даними. JSON легко читається людиною. Обмін даними При обміні даними між браузером і сервером дані можуть бути тільки текстовими. JSON є текстом і ми можемо конвертувати будь-який JavaScript об’єкт у JSON, а потім передати JSON на сервер. Ми також можемо конвертувати будь-який JSON, отриманий з сервера, у JavaScript об’єкт. Таким чином ми можемо працювати з даними як з JavaScript об’єктами, без складного парсингу і перетворень.
  • 3. JSON синтаксис Синтаксис JSON є підвидом синтаксису JavaScript. Правила: Дані подаються парами ім‘я/значення: "name":"value" Дані розділяються комами Об’єкти поміщаються в фігурні дужки {…} Масиви поміщаються в квадратні дужки […] Приклад подачі даних: {"name":"Вася","age":28} Ключі і рядкові величини повинні бути в подвійних лапках. У JavaScript можна було б подати так: {"name":'Вася','age':28}
  • 4. Операції з об’єктами Приклад створення об’єкта у JavaScript: var person = { "name":"Вася", "age":28, "city":"Луцьк" }; Доступ до властивостей об’єктів: alert(person.name); // Вася або alert(person["name"]); // Вася Зміна даних: person.name = "Коля"; або person["name"] = "Коля"; JavaScript об’єкти можуть використовуватись як JSON, це саме стосується масивів.
  • 5. JSON і XML Дані зручно зберігати як у форматі XML, так і у JSON. Приклад XML: <employees> <employee> <firstName>John</firstName> <lastName>Doe</lastName> </employee> <employee> <firstName>Anna</firstName> <lastName>Smith</lastName> </employee> <employee> <firstName>Peter</firstName> <lastName>Jones</lastName> </employee> </employees>
  • 6. Приклад JSON {"employees":[ { "firstName":"John", "lastName":"Doe" }, { "firstName":"Anna", "lastName":"Smith" }, { "firstName":"Peter", "lastName":"Jones" } ]}
  • 7. Подібності JSON і XML: • JSON і XML – формати з “самоописом” (зручні для сприйняття людиною) • JSON і XML мають ієрархічну структуру (величини всередині величин) • JSON і XML сприймаються дуже багатьма мовами програмування • JSON і XML можна передавати через XMLHttpRequest
  • 8. Відмінності JSON і XML: •JSON не використовує тегів •JSON коротший •JSON швидше читати і писати •JSON може використовувати масиви Головне: XML повинен парситись XML парсером, а JSON можна парсити стандартними функціями JavaScript.
  • 9. Про відмінності JSON і JavaScript: var myObj = { "name":"Вася", "age":31, "city":"Луцьк" }; alert(myObj); // [object Object] var myJSON = JSON.stringify(myObj); alert(myJSON); // {"name":"Вася","age":31,"city": "Луцьк"}
  • 10. Типи даних у JSON: • рядкові • числові • об’єкти (JSON об’єкти) • масиви • логічні (true/false) • null Не можуть бути даними у JSON: • функції • дати (date) • undefined
  • 11. Величинами у JSON можуть бути JSON об’єкти (подані за належним синтаксисом). Наприклад: { "employee":{ "name":"Вася", "age":28, "city":"Луцьк" } } Таблиці у JSON: { "employees":[ "Вася", "Коля", "Маруся" ] }
  • 12. Операції з об’єктами Доступ через крапковий синтаксис: myObj = { "name":"Вася", "age":30, "car":null }; x = myObj.name; або через []: x = myObj["name"]; Перебір властивостей: for (x in myObj) { demo.innerHTML += x + "<br>"; }
  • 13. Для доступу до значень властивостей можна використати квадратні дужки: var myObj = { "name":"Вася", "age":28, "car":null }; for (x in myObj) { demo.innerHTML += myObj[x] + "<br>"; } Вкладені об’єкти: myObj = { "name":"Вася", "age":28, "cars": { "car1":"Ford","car2":"BMW","car3":"Fiat" } } x = myObj.cars.car2; //або: x = myObj.cars["car2"];
  • 14. Аналогічно можна змінювати величини в JSON об‘єктах: myObj.cars.car2 = "Mercedes"; або myObj.cars["car2"] = "Mercedes"; Видалення властивостей: delete myObj.cars.car2;
  • 15. Масиви в JSON Допустимі типи даних у JSON масивах: string, number, object, array, boolean, null У JavaScript – все перераховане плюс функції, дати і undefined. Масиви можуть бути значеннями властивостей JSON об’єктів { "name":"John", "age":30, "cars":[ "Ford", "BMW", "Fiat" ] }
  • 16. Значення з масиву можна отримати (чи змінити) через індекс: <p id="demo"></p> <script> var myObj, x; myObj = { "name":"Вася", "age":28, "cars":[ "Ford", "BMW", "Fiat" ] }; x = myObj.cars[0]; demo.innerHTML = x; // Ford </script>
  • 17. Цикли по масивах: for (i in myObj.cars) { x += myObj.cars[i]; } або for (i = 0; i < myObj.cars.length; i++) { x += myObj.cars[i]; }
  • 18. Величини в масивах можуть бути іншими масивами або навіть іншими JSON об’єктами: myObj = { "name":"John", "age":30, "cars": [ { "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] }, { "name":"BMW", "models":[ "320", "X3", "X5" ] }, { "name":"Fiat", "models":[ "500", "Panda" ] } ] }
  • 19. Перебір значень у випадку вкладених об’єктів: <p id="demo"></p> <script> var myObj, i, j, x = ""; myObj = { "name":"Вася", "age":28, "cars": [ { "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] }, { "name":"BMW", "models":[ "320", "X3", "X5" ] }, { "name":"Fiat", "models":[ "500", "Panda" ] } ] } for (i in myObj.cars) { x += "<h2>" + myObj.cars[i].name + "</h2>"; for (j in myObj.cars[i].models) { x += myObj.cars[i].models[j] + "<br>"; } } demo.innerHTML = x; </script>
  • 20. Видалення елементів масивів: delete myObj.cars[1]; Задача 85.0 Відкрийте файл books.xml (доступний тут: goo.gl/KQwAqs ) і створіть за цими даними об’єкт catalog. Виведіть дані з об’єкта на сторінку.
  • 21. Розв’язок <p id="info"></p> <script> var x = ""; var catalog = { "books": [ { "author":"Умберто Еко", "title":"Бавдоліно", "pages": 444}, { "author":"Салман Рушді", "title":"Джозеф Антон", "pages": 728}, { "author":"Юрій Виничук", "title":"Чорт зна що", "pages": 792}, { "author":"Герман Гессе", "title":"Гра в бісер", "pages": 510} ] } for (i in catalog.books) { x += "<h2>" + catalog.books[i].author + "</h2>"; x += "<p>" + catalog.books[i].title + ", сторінок: " + catalog.books[i].pages + "</p>"; } info.innerHTML = x; </script>
  • 22. Задача 85.1 Додайте кнопки “Видалити першу книгу” і “Видалити останню книгу” з відповідними діями над об’єктом.
  • 23. Розв’язок <button onclick="deleteFirstBook()">Видалити першу книгу</button> <button onclick="deleteLastBook()">Видалити останню книгу</button> <script> var x; var catalog = { } // див. вище showBook(); function showBook(){ x = ""; for (i in catalog.books) { x += "<h2>" + catalog.books[i].author + "</h2>"; x += "<p>" + catalog.books[i].title + ", сторінок: " + catalog.books[i].pages + "</p>"; } info.innerHTML = x; } function deleteFirstBook(){ delete catalog.books[0]; showBook(); } function deleteLastBook(){ delete catalog.books[catalog.books.length-1]; showBook(); } </script>
  • 24. JSON.parse() JSON зазвичай використовується для обміну даними з сервером. При отриманні даних з сервера вони завжди мають рядковий тип. Якщо застосувати до даних JSON.parse(), вини стануть JavaScript об’єктом.
  • 25. Наприклад, ми отримуємо з сервера дані у формі: '{ "name":"Вася", "age":28, "city":"Луцьк"}' Використаємо JavaScript функцію JSON.parse() щоб ковертувати текст у JavaScript об’єкт: var obj = JSON.parse('{ "name":"Вася", "age":28, "city":"Луцьк"}'); Слід уважно дотримуватись синтаксису JSON!
  • 26. Приклад взаємодії JSON і AJAX. var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myObj = JSON.parse(this.responseText); demo.innerHTML = myObj.name; } }; xhttp.open("GET", "json_demo.txt", true); xhttp.send();
  • 27. Вміст файлу json_demo.txt: { "name":"John", "age":31, "pets":[ { "animal":"dog", "name":"Fido" }, { "animal":"cat", "name":"Felix" }, { "animal":"hamster", "name":"Lightning" } ] }
  • 28. JSON.stringify() Для конвертування JavaScript об’єкта у рядкову величину використовується JSON.stringify() . Приклад: <p id="demo"></p> <script> var obj = { "name":"Вася", "age":28, "city":"Луцьк"}; var myJSON = JSON.stringify(obj); demo.innerHTML = myJSON; </script>
  • 29. Аналогічно можна діяти з масивами: <p id="demo"></p> <script> var arr = [ "Вася", "Коля", "Маруся", "Люба" ]; var myJSON = JSON.stringify(arr); demo.innerHTML = myJSON; </script>
  • 30. Stringify перетворює дані в рядки, а функції просто видаляє. <p id="demo"></p> <script> var obj = { "name":"Вася", "age":function () {return 28;}, "city":"Луцьк", "date": new Date()}; var myJSON = JSON.stringify(obj); demo.innerHTML = myJSON; </script> Виводить: {"name":"Вася","city":"Луцьк","date":" 2017-07-19T11:34:00.181Z"}