Skip to content

JSON

Wpis ten jest pierwszą (nieco teoretyczną) częścią dwuczęściowego cyklu na temat formatu JSON. Następny będzie traktował o GSON, a więc jednej z bibliotek do operacji na JSON-ach z poziomu kodu Javy. 

Czym jest JSON?

JSON – JavaScript Object Notation – jest to nic innego jak bardzo prosty format służący do wymiany danych. Przyjmuje on postać tekstową, a więc jest łatwy do interpretacji zarówno przez ludzi jak i komputery. Kolejną kwestią będącą następstwem tekstowej postaci tego formatu jest niezależność od jakichkolwiek języków programowania. Może być używany zarówno w Javie, C#, PHP jak i w praktycznie jakimkolwiek innym nowoczesnym języku programowania.

JSON opiera się na dwóch strukturach:

  • Zbiór par nazwa/wartość
  • Uporządkowana lista wartości

Powyższe struktury można przedstawić w następujący sposób:

  • Obiekt – zbiór par nazwa/wartość. Opis obiektu umieszczony jest w nawiasach klamrowych. Nazwy atrybutów i ich wartości oddzielamy dwukropkiem. Poszczególne pary oddziela się przecinkiem. Przedstawia to następujący schemat:

  • Tablica – jest to uporządkowany zbiór wartości. Zawartość tabeli umieszczona jest w nawiasach kwadratowych. Tak samo jak w przypadku obiektów, poszczególne elementy tablicy rozdzielane są przecinkiem. Przedstawia to następujący schemat:

  • Wartość (value z powyższych schematów) – może przyjmować poniższe postaci:
    • Łańcuch znaków – zawartość umieszczana jest w podwójnym cudzysłowie
    • Liczba – nie ma tutaj żadnych specjalnych oznaczeń
    • Zmienna bool’owska – czyli po prostu wartość true lub false
    • Null – tak samo jak w przypadku dwóch powyższych sytuacji, nie ma dodatkowych oznaczeń
    • Obiekt oraz tablica – tej dwójki dotyczą konwencje przedstawione na dwóch powyższych schematach

Sądzę, że z punktu widzenia programisty korzystającego z bibliotek, które automatycznie zajmują się pozostałymi kwestiami wiedza ta wystarczy, aby zacząć wykorzystywać JSON-y w praktyce.

Przykłady

Typy prymitywne

        int integerValue = 10;
        float floatValue = 11.32F;
        double doubleValue = 12.3564;
        long longValue = Long.MAX_VALUE;
        boolean booleanValue = true;
        String stringValue = "This is an example string...";

Po utworzeniu tablicy z powyższych zmiennych, przybierze ona następującą postać:

[
   10,
   11.32,
   12.3564,
   9223372036854775807,
   true,
   "This is an example string..."
]

Obiekty

Załóżmy, że mamy następującą klasę:

class Pizza {
    private String name;
    private int diagonal;
    private boolean isVegetarian;

    Pizza(String name, int diagonal, boolean isVegetarian) {
        this.name = name;
        this.diagonal = diagonal;
        this.isVegetarian = isVegetarian;
    }
}

Następnie tworzymy dwa obiekty tej klasy:

        Pizza carbonara = new Pizza("Carbonara", 32, false);
        Pizza funghi = new Pizza("Funghi", 45, true);

Format JSON dla tych obiektów będzie wyglądać następująco:

{
   "name":"Carbonara",
   "diagonal":32,
   "isVegetarian":false
}
{
   "name":"Funghi",
   "diagonal":45,
   "isVegetarian":true
}

Tablice i kolekcje

Wykorzystajmy klasę Pizza z powyższego przykładu i stwórzmy następującą tablicę:

        Pizza carbonara = new Pizza("Carbonara", 32, false);
        Pizza funghi = new Pizza("Funghi", 45, true);
        
        Pizza[] pizzas = {carbonara, funghi};

Format JSON dla takiej tablicy będzie wyglądać następująco:

[
   {
      "name":"Carbonara",
      "diagonal":32,
      "isVegetarian":false
   },
   {
      "name":"Funghi",
      "diagonal":45,
      "isVegetarian":true
   }
]

Gdybyśmy zastąpili tablicę kolekcją (np. listą) JSON wyglądałby identycznie.


Źródła:

Facebooktwitterredditlinkedinmail
Published inNarzędziaProgramowanie