Формати Даних: JSON Та XML
Свайпніть щоб показати меню
У попередніх розділах було розглянуто, як працює HTTP і як він передає дані. У цьому розділі розглядаються формати такі як JSON та XML, які використовуються для передачі даних у тілі відповіді сервера або під час надсилання запиту на сервер.
Що таке JSON?
JSON використовується для передачі даних у форматі ключ-значення, що робить його дуже зручним для доступу до даних і прямого перетворення у об'єкт.
Цей формат підтримує масиви, об'єкти, а також примітивні значення такі як рядки, числа та булеві значення.
Формати даних у JSON
Для масивів у JSON використовується наступний синтаксис:
{
"courses": ["Math", "Science"]
}
Уся інформація розміщується у фігурних дужках, а назва ключа (наприклад, "courses") вказується у лапках. Значення, що відповідає цьому ключу, у даному випадку є масивом (["Math", "Science"]), який береться у квадратні дужки для позначення, що це масив.
Якщо потрібно передати прості примітивні типи (такі як числа, рядки або булеві значення) у форматі JSON, це можна зробити так:
{
"name": "John Doe",
"age": 30,
"isStudent": false
}
Можна передавати об'єкти у форматі JSON. Об'єкт представлений набором пар ключ-значення, які розміщені у фігурних дужках.
{
"address": {
"street": "123 Main St",
"city": "Anytown"
}
}
Кожен ключ є рядком і слідує за ним двокрапка з відповідним значенням, яке може бути іншим об'єктом, масивом, примітивним типом або null.
Передача JSON через HTTP
Під час передачі даних у форматі JSON через HTTP як запити, так і відповіді використовують заголовок Content-Type, встановлений у значення application/json. У запиті дані розміщуються в тілі запиту, а у відповіді — в тілі відповіді.
Структура запиту:
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
{
"name": "John Doe",
"age": 30
}
Структура відповіді:
HTTP/1.1 200 OK
Content-Type: application/json
{
"status": "success",
"data": {
"userId": 12345
}
}
Серіалізація та десеріалізація JSON
Серіалізація — це перетворення об'єкта або структури даних у формат, придатний для передачі мережею або зберігання у файлі.
Десеріалізація — це зворотний процес, який перетворює дані з формату JSON назад в об'єкт або структуру даних для використання у коді.
Залежність з відео для інтеграції серіалізації та десеріалізації JSON. Це необхідно, щоб можна було використовувати клас ObjectMapper.
Потрібно додати цю залежність у файл pom.xml та оновити його.
Як використовувати Maven Repository
Що таке XML?
XML представляє дані за допомогою тегів, що утворюють ієрархічну структуру. Кожен елемент має як відкриваючий, так і закриваючий тег, а також може містити атрибути.
Синтаксис XML
<person>
<name>John Doe</name>
<age>30</age>
<isStudent>false</isStudent>
<courses>
<course>Math</course>
<course>Science</course>
</courses>
<address>
<street>123 Main St</street>
<city>Anytown</city>
</address>
</person>
Як видно, усе тут побудовано на тегах. Списки та об'єкти не мають суттєвих відмінностей, але якщо потрібно представити просте значення, назва тегу виступає ключем, а значення всередині тегу — це значення.
Передача XML через HTTP:
Для передачі XML даних заголовок Content-Type може бути встановлений як application/xml або text/xml. Дані також розміщуються у тілі запиту або відповіді.
Приклад запиту:
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/xml
<user>
<name>John Doe</name>
<age>30</age>
</user>
Приклад відповіді:
HTTP/1.1 200 OK
Content-Type: application/xml
<response>
<status>success</status>
<data>
<userId>12345</userId>
</data>
</response>
Серіалізація та десеріалізація XML
Залежність з відео для інтеграції серіалізації та десеріалізації XML. Це необхідно, щоб можна було використовувати клас XmlMapper.
Потрібно додати цю залежність у файл pom.xml та оновити його.
Підсумок
JSON є переважним вибором для сучасних веб-застосунків завдяки своїй легкості та простоті. Хоча XML може бути менш зручним для багатьох веб-сценаріїв, він може бути корисним у випадках, коли потрібна складна структура даних та строгі схеми.
1. Який формат використовується для представлення даних у вигляді пар key-value та є більш легким і зручним для передачі мережею?
2. Який із наведених фрагментів коду є коректним JSON?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат