JSON/pl: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: JSON/pl
| Old | New | Line | |
|---|---|---|---|
| 1 | + | ## Przegląd | |
| 2 | + | ||
| 3 | + | [JSON](http://www.json.org) (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. | |
| 4 | + | ||
| 5 | + | W porównaniu z [[XML]], jest bardziej czytelny dla człowieka. | |
| 6 | + | ||
| 7 | + | ## Obiekt JSON | |
| 8 | + | ||
| 9 | + | Obiekt JSON to nic innego jak zbiór oddzielonych przecinkami par nazwa/wartość (często nazywanych elementami) ujętych w nawiasy klamrowe: | |
| 10 | + | ||
| 11 | + | ``` javascript | |
| 12 | + | {"name1":value1, "name2":value2 ...} | |
| 13 | + | ``` | |
| 14 | + | ||
| 15 | + | Aby ułatwić ludziom czytanie i wizualizację JSON, pary nazwa/wartość są często wymienione pionowo: | |
| 16 | + | ||
| 17 | + | ``` javascript | |
| 18 | + | { | |
| 19 | + | "name1": value1, | |
| 20 | + | "name2": value2 | |
| 21 | + | } | |
| 22 | + | ``` | |
| 23 | + | ||
| 24 | + | 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: | |
| 25 | + | ||
| 26 | + | - prosty ciąg, wartość liczbowa, logiczna lub null (ciągi są ujęte w podwójne cudzysłowy):\ | |
| 27 | + | `{"id":1, "name":"John Doe", "married":false}` | |
| 28 | + | ||
| 29 | + | - tablica; która jest zbiorem wartości oddzielonych przecinkami w nawiasach kwadratowych:\ | |
| 30 | + | `{"primeNumbers":[2, 3, 5, 7, 11, 13, 17], "oddNumbers":[1,3,5,7]}` | |
| 31 | + | ||
| 32 | + | - obiekt; który jest zbiorem par nazwa/wartość zawartych w nawiasach klamrowych:\ | |
| 33 | + | `{"address":{"street":"145 Koinange Street", "City":"Nairobi", "Country":"Kenya"}}` | |
| 34 | + | ||
| 35 | + | Obiekty JSON można zagnieżdżać dowolnie, aby tworzyć jeszcze bardziej złożone obiekty: | |
| 36 | + | ||
| 37 | + | ``` javascript | |
| 38 | + | {"user": | |
| 39 | + | { "userid": 1900, | |
| 40 | + | "username": "jsmith", | |
| 41 | + | "password": "secret", | |
| 42 | + | "groups": [ "admins", "users", "maintainers"] | |
| 43 | + | } | |
| 44 | + | } | |
| 45 | + | ``` | |
| 46 | + | ||
| 47 | + | Sprawdź ten [[fcl-json|link]], aby wyodrębnić informacje, gdy masz kilku użytkowników. | |
| 48 | + | ||
| 49 | + | ## Prawidłowy format JSON | |
| 50 | + | ||
| 51 | + | Istnieje kilka zasad i wytycznych, które definiują składnię JSON (patrz RFC 4627): | |
| 52 | + | ||
| 53 | + | - Obiekty JSON są otoczone nawiasami klamrowymi otwierającymi i zamykającymi `{ }`. Pusty obiekt może być reprezentowany przez `{ }` | |
| 54 | + | - Tablice są zamknięte w nawiasy kwadratowe otwierające i zamykające `[ ]`. Pusta tablica może być reprezentowana przez `[ ]` | |
| 55 | + | - Pojedynczy element obiektu JSON reprezentowany jest przez parę klucz-wartość | |
| 56 | + | - Klucz elementu powinien być zawarty w podwójnych cudzysłowach | |
| 57 | + | - Każdy element POWINIEN mieć unikalny klucz w strukturze obiektu | |
| 58 | + | - Wartość elementu musi być zawarta w podwójnych cudzysłowach, jeśli jest to ciąg znaków | |
| 59 | + | - Wartości Boolean są reprezentowane za pomocą literałów **true** lub **false** zapisane małymi literami | |
| 60 | + | - 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 | |
| 61 | + | - Znaki „specjalne” w ciągu muszą być poprzedzone znakiem odwrotnego ukośnika | |
| 62 | + | - Wartości Null są reprezentowane przez literał **null** zapisany małymi literami | |
| 63 | + | - 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 | |
| 64 | + | - Po każdym elemencie obiektu lub każdej wartości tablicy musi znajdować się przecinek, jeśli nie jest to ostatni element | |
| 65 | + | - Typowym rozszerzeniem plików JSON jest **.json** | |
| 66 | + | - Typ MIME dla plików JSON to **application/json** | |
| 67 | + | ||
| 68 | + | ## Implementacja | |
| 69 | + | ||
| 70 | + | 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 | |
| 71 | + | ||
| 72 | + | - bądź tolerancyjny w tym, co akceptujesz | |
| 73 | + | - bądź rygorystyczny (przestrzegając standardu) w tym co wysyłasz. | |
| 74 | + | ||
| 75 | + | Istnieją dwie główne implementacje JSON: | |
| 76 | + | ||
| 77 | + | ### Oficjalna składnia specyfikacji JSON | |
| 78 | + | ||
| 79 | + | Ta implementacja jest ściśle zgodna z wytycznymi dokumentu [RFC 8259](https://tools.ietf.org/html/rfc8259) i nie pozwala na odstępstwa od specyfikacji. | |
| 80 | + | ||
| 81 | + | ### Składnia JavaScript | |
| 82 | + | ||
| 83 | + | Ta implementacja wynika z implementacji języka programowania JavaScript i jako taka pozwala na kilka odchyleń od oficjalnej specyfikacji. Na przykład: | |
| 84 | + | ||
| 85 | + | 1. dopuszcza klucze bez cudzysłowu, np. `{name: "John Doe" }` | |
| 86 | + | 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'}` | |
| 87 | + | 3. zezwala na końcowy przecinek po ostatnim elemencie tablicy i/lub obiektu, np. `{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}` | |
| 88 | + | ||
| 89 | + | ## Zobacz też | |
| 90 | + | ||
| 91 | + | - [[fcl-json/pl]] Pakiet implementujący JSON dla FreePascal i Lazarus | |
| 92 | + | - [Oficjalna strona JSON](http://www.json.org) | |
| 93 | + | - [[Streaming JSON/de]] - (Oryginalny niemiecki artykuł) | |
| 94 | + | - [[Streaming JSON/ru]] - (Tłumaczenie rosyjskie z angielskiego) | |
| 95 | + | - [[Streaming JSON/ko]] - (Tłumaczenie koreańskie z angielskiego) | |
| 96 | + | - [[Streaming JSON]] - (Tłumaczenie na język angielski z oryginalnego niemieckiego) | |
| 97 | + | - [Formater JSON](https://jsonformatter.org) | |
| 98 | + | ||
| 99 | + | --- | |
| 100 | + | *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](/wiki-contact).* | |
| 101 | + | Category: JSON |
