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.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
