JSON/pl

From Lazarus wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

English (en) suomi (fi) 日本語 (ja) 한국어 (ko) polski (pl) русский (ru) 中文(中国大陆)‎ (zh_CN)

Przegląd

JSON (JavaScript Object Notation) jest to znormalizowany format wymiany danych zapisanych przy użyciu zwykłego tekstu. Jak sama nazwa wskazuje, jest on oparty na podstawie języka programowania JavaScript; jest jednak całkowicie niezależny od języka. Oprócz tego, że ludzie mogą łatwo czytać i pisać pliki JSON, to maszyny również są w stanie parsować i generować te pliki.

W porównaniu z XML, jest bardziej czytelny dla człowieka.

Obiekt JSON

Obiekt JSON to nic innego jak zbiór oddzielonych przecinkami par nazwa/wartość (często nazywanych elementami) ujętych w nawiasy klamrowe:

{"name1":value1, "name2":value2 ...}

Aby ułatwić ludziom czytanie i wizualizację JSON, pary nazwa/wartość są często wymienione pionowo:

{
	"name1": value1,
	"name2": value2
}

Nazwa jest łańcuchem znaków ujętych w podwójnych cudzysłowach, a wartością może być jedna z następujących opcji:

  • prosty ciąg, wartość liczbowa, logiczna lub null (ciągi są ujęte w podwójne cudzysłowy):
    {"id":1, "name":"John Doe", "married":false}
  • tablica; która jest zbiorem wartości oddzielonych przecinkami w nawiasach kwadratowych:
    {"primeNumbers":[2, 3, 5, 7, 11, 13, 17], "oddNumbers":[1,3,5,7]}
  • obiekt; który jest zbiorem par nazwa/wartość zawartych w nawiasach klamrowych:
    {"address":{"street":"145 Koinange Street", "City":"Nairobi", "Country":"Kenya"}}

Obiekty JSON można zagnieżdżać dowolnie, aby tworzyć jeszcze bardziej złożone obiekty:

{"user":
	{	"userid": 1900,
		"username": "jsmith",
		"password": "secret",
		"groups": [ "admins", "users", "maintainers"]
	}
}

Sprawdź ten link, aby wyodrębnić informacje, gdy masz kilku użytkowników.

Prawidłowy format JSON

Istnieje kilka zasad i wytycznych, które definiują składnię JSON (patrz RFC 4627):

  • Obiekty JSON są otoczone nawiasami klamrowymi otwierającymi i zamykającymi { }. Pusty obiekt może być reprezentowany przez { }
  • Tablice są zamknięte w nawiasy kwadratowe otwierające i zamykające [ ]. Pusta tablica może być reprezentowana przez [ ]
  • Pojedynczy element obiektu JSON reprezentowany jest przez parę klucz-wartość
  • Klucz elementu powinien być zawarty w podwójnych cudzysłowach
  • Każdy element POWINIEN mieć unikalny klucz w strukturze obiektu
  • Wartość elementu musi być zawarta w podwójnych cudzysłowach, jeśli jest to ciąg znaków
  • Wartości Boolean są reprezentowane za pomocą literałów true lub false zapisane małymi literami
  • Wartości liczbowe są reprezentowane przy użyciu formatu zmiennoprzecinkowego podwójnej precyzji; Obsługiwany jest także zapis naukowy; Liczby nie powinny mieć wiodących zer
  • Znaki „specjalne” w ciągu muszą być poprzedzone znakiem odwrotnego ukośnika
  • Wartości Null są reprezentowane przez literał null zapisany małymi literami
  • Inne typy obiektów, takie jak daty, nie są natywnie obsługiwane i powinny zostać przekonwertowane na ciągi; do zarządzania przez analizator składni/klienta
  • Po każdym elemencie obiektu lub każdej wartości tablicy musi znajdować się przecinek, jeśli nie jest to ostatni element
  • Typowym rozszerzeniem plików JSON jest .json
  • Typ MIME dla plików JSON to application/json

Implementacja

Implementacja JSON nie jest bardzo rygorystyczna, a aplikacja kliencka i/lub analizator składni mają dużo swobody w egzekwowaniu wytycznych. Ale, jak zwykle podczas pisania kodu

  • bądź tolerancyjny w tym, co akceptujesz
  • bądź rygorystyczny (przestrzegając standardu) w tym co wysyłasz.

Istnieją dwie główne implementacje JSON:

Oficjalna składnia specyfikacji JSON

Ta implementacja jest ściśle zgodna z wytycznymi dokumentu RFC 8259 i nie pozwala na odstępstwa od specyfikacji.

Składnia JavaScript

Ta implementacja wynika z implementacji języka programowania JavaScript i jako taka pozwala na kilka odchyleń od oficjalnej specyfikacji. Na przykład:

  1. dopuszcza klucze bez cudzysłowu, np. {name: "John Doe" }
  2. dopuszcza pojedyncze cudzysłowy dla kluczy i/lub wartości łańcuchowych; oraz toleruje mieszanie pojedynczych i podwójnych cudzysłowów, np. {'name': "John Doe", "language":'Pascal'}
  3. zezwala na końcowy przecinek po ostatnim elemencie tablicy i/lub obiektu, np. {"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}

Zobacz też

[[:{{{NameWithoutSuffix}}}/ru|한국어 (ru)]]