JSON – це один із найпопулярніших форматів текстового подання даних. Використовується JSON, наприклад, для передачі даних між фронтендом та бекендом, у файлах конфігурації, в іграх, у текстових редакторах і в багатьох інших сферах. У майбутньому в роботі ти точно зустрінешся з JSON.

Знайомство з синтаксисом

Перерахуємо типи даних, доступні в JSON:

  1. Рядки — будь-які символи в подвійних лапках:

    "йцукен"
    "125 + 42"
    "G"

    Спеціальні символи екрануються за допомогою слешу:

    "first line\nsecond line"
    "ТОВ \"Роги\/копита\""
  2. Числа, у тому числі від'ємні та дійсні. Без дужок:

    18 -333 17.88 1.2e6
  3. Логічний тип — true / false (без лапок).

  4. null — стандартне позначення для “нічого”. Лапки не потрібні.

  5. Масив — цей тип може містити значення будь-яких інших типів. Береться у квадратні дужки, елементи розділяються комами:

    ["Java", "Rush", "JavaRush", "¯\_(ツ)_/¯"]
    [true, true, false, true, false, false, false, false, false]
    [[1, 2], [3, 999, 4, -5], [77]]

    Останній приклад — масив масивів.

  6. Об'єкт — складний тип, але він використовується найчастіше. Містить пари ключ:значення, де значеннями можуть бути будь-які типи, наведені вище, а також інші об'єкти. Береться у фігурні дужки, пари розділяються комами:

    
    {
     "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: є два види коментарів: // та /*...*/ . Сподіваюся, не потрібно нагадувати, чим вони відрізняються?