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": "Vova",
     "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: есть два вида комментариев: // и /*...*/ . Надеюсь, не нужно напоминать, чем они отличаются?