JSON – це один із найпопулярніших форматів текстового подання даних. Використовується JSON, наприклад, для передачі даних між фронтендом та бекендом, у файлах конфігурації, в іграх, у текстових редакторах і в багатьох інших сферах. У майбутньому в роботі ти точно зустрінешся з JSON.
Знайомство з синтаксисом
Перерахуємо типи даних, доступні в JSON:
Рядки — будь-які символи в подвійних лапках:
"йцукен""125 + 42""G"Спеціальні символи екрануються за допомогою слешу:
"first line\nsecond line""ТОВ \"Роги\/копита\""Числа, у тому числі від'ємні та дійсні. Без дужок:
18 -333 17.88 1.2e6Логічний тип — true / false (без лапок).
null — стандартне позначення для “нічого”. Лапки не потрібні.
Масив — цей тип може містити значення будь-яких інших типів. Береться у квадратні дужки, елементи розділяються комами:
["Java", "Rush", "JavaRush", "¯\_(ツ)_/¯"][true, true, false, true, false, false, false, false, false][[1, 2], [3, 999, 4, -5], [77]]Останній приклад — масив масивів.
Об'єкт — складний тип, але він використовується найчастіше. Містить пари ключ:значення, де значеннями можуть бути будь-які типи, наведені вище, а також інші об'єкти. Береться у фігурні дужки, пари розділяються комами:
{ "name": "Arsen", "age": 7 }
Подання Java-об'єкта у вигляді JSON
Тепер давай візьмемо якийсь Java-об'єкт і поглянемо на нього у вигляді JSON.
Спочатку опишемо клас:
public class Human {
String name;
boolean male;
int age;
Set<Human> parents;
public Human(String name, boolean male, int age) {
this.name = name;
this.male = male;
this.age = age;
}
}
Потім створимо наш об'єкт:
Human father = new Human("Петро", true, 31);
Human mather = new Human("Марія", false, 28);
mather.parents = new HashSet<>();
Human son = new Human("Павло", true, 7);
son.parents = Set.of(father, mather);
А тепер спробуємо якомога точніше відобразити об'єкт son у форматі JSON:
"name" : "Павло",
"male" : true,
"age" : 7,
"parents" : [
{
"name" : "Петро",
"male" : true,
"age" : 31,
"parents" : null
},
{
"name" : "Марія",
"male" : false,
"age" : 28,
"parents" : null
}
]
}
Коментарі в JSON
Тут усе так само, як у Java: є два види коментарів: // та /*...*/ . Сподіваюся, не потрібно нагадувати, чим вони відрізняються?