JSON/pl
│
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:
- dopuszcza klucze bez cudzysłowu, np.
{name: "John Doe" }
- 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'}
- zezwala na końcowy przecinek po ostatnim elemencie tablicy i/lub obiektu, np.
{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}
Zobacz też
- fcl-json/pl Pakiet implementujący JSON dla FreePascal i Lazarus
- Oficjalna strona JSON
- Streaming JSON/de - (Oryginalny niemiecki artykuł)
- Streaming JSON/ru - (Tłumaczenie rosyjskie z angielskiego)
- Streaming JSON/ko - (Tłumaczenie koreańskie z angielskiego)
- Streaming JSON - (Tłumaczenie na język angielski z oryginalnego niemieckiego)
- Formater JSON
[[:{{{NameWithoutSuffix}}}/ru|한국어 (ru)]] │