JSON/pl
한국어 · English · Polski · Suomi · Русский · 中文(中国) · 日本語
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
From the Free Pascal wiki, page "JSON/pl", as it stood on 2020-06-26 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.