JSON to jeden z najpopularniejszych formatów tekstowej reprezentacji danych. JSON jest używany na przykład do przesyłania danych między frontendem a backendem, w plikach konfiguracyjnych, w grach, w edytorach tekstu iw wielu innych obszarach. Zostając programistą, na pewno spotkasz się z JSON.

Wprowadzenie do składni

Wymieńmy typy danych dostępne w JSON:

  1. Ciągi to dowolne znaki ujęte w podwójne cudzysłowy:

    "yutsuken"
    "125+42"
    "G"

    Znaki specjalne są poprzedzone ukośnikiem:

    "pierwsza linia\ndruga linia"
    "JSC \"Rogi\/kopyta\""
  2. Liczby, w tym ujemne i rzeczywiste. Bez cytatów:

    18 -333 17,88 1,2e6
  3. Typ logiczny - prawda / fałsz (bez cudzysłowów).

  4. null to standardowa notacja dla „nic”. Cytaty nie są potrzebne.

  5. Tablica — Ten typ może zawierać wartości dowolnego innego typu. Otoczone nawiasami kwadratowymi, elementy oddzielone przecinkami:

    ["Java", "Rush", "CodeGym", "¯\_(ツ)_/¯"]
    [prawda, prawda, fałsz, prawda, fałsz, fałsz, fałsz, fałsz, fałsz]
    [[1, 2], [3, 999, 4, -5], [77]]

    Ostatnim przykładem jest tablica tablic

  6. Obiekt jest typem złożonym, ale najczęściej używanym. Zawiera pary klucz:wartość, gdzie wartością może być dowolny z typów wymienionych powyżej, a także inne obiekty. Pary otoczone nawiasami klamrowymi są oddzielone przecinkami:

    
    {
     "name": "Dale",
     "age": 7
    }
    

Reprezentowanie obiektu Java jako JSON

Teraz weźmy jakiś obiekt Java i spójrzmy na to jako JSON.

Opiszmy najpierw klasę:


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;
	}
}

Następnie stwórzmy nasz obiekt:


	Human father = new Human("Peter", true, 31);
	Human mother = new Human("Mary", false, 28);
	mother.parents = new HashSet<>();
	Human son = new Human("Paul", true, 7);
	son.parents = Set.of(father, mother);

A teraz postaramy się przedstawić obiekt tak dokładnie, jak to możliwe.synw formacie JSON:

{
 "imię" : "Pavel",
 "mężczyzna" : prawda,
 "wiek" : 7,
 "rodzice" : [
 {
   "imię" : "Piotr",
   "mężczyzna" : prawda,
   "wiek" : 31,
   "rodzice" : null
 },
 {
   "imię" : "Mary",
   "mężczyzna" : fałsz,
   "wiek" : 28,
   "rodzice" : null
 }
]
}

Komentarze w formacie JSON

Wszystko tutaj jest dokładnie takie samo jak w Javie: są dwa rodzaje komentarzy: // i /*...*/ . Mam nadzieję, że nie muszę przypominać, czym się różnią?