Difference between revisions of "JSON/pl"
(→Valid JSON format: tłumaczenie na j. polski) |
|||
(10 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
== Przegląd == | == Przegląd == | ||
− | [http://www.json.org JSON] (JavaScript Object Notation) jest to znormalizowany format wymiany danych zapisanych przy użyciu | + | [http://www.json.org 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. | W porównaniu z [[XML]], jest bardziej czytelny dla człowieka. | ||
Line 13: | Line 13: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Aby ułatwić ludziom czytanie i wizualizację, | + | Aby ułatwić ludziom czytanie i wizualizację JSON, pary nazwa/wartość są często wymienione pionowo: |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 25: | Line 25: | ||
* prosty ciąg, wartość liczbowa, logiczna lub null (ciągi są ujęte w podwójne cudzysłowy):<br /><code>{"id":1, "name":"John Doe", "married":false}</code> | * prosty ciąg, wartość liczbowa, logiczna lub null (ciągi są ujęte w podwójne cudzysłowy):<br /><code>{"id":1, "name":"John Doe", "married":false}</code> | ||
− | * tablica; | + | * tablica; która jest zbiorem wartości oddzielonych przecinkami w nawiasach kwadratowych:<br /><code>{"primeNumbers":[2, 3, 5, 7, 11, 13, 17], "oddNumbers":[1,3,5,7]}</code> |
* obiekt; który jest zbiorem par nazwa/wartość zawartych w nawiasach klamrowych:<br /><code>{"address":{"street":"145 Koinange Street", "City":"Nairobi", "Country":"Kenya"}}</code> | * obiekt; który jest zbiorem par nazwa/wartość zawartych w nawiasach klamrowych:<br /><code>{"address":{"street":"145 Koinange Street", "City":"Nairobi", "Country":"Kenya"}}</code> | ||
− | Obiekty JSON można | + | Obiekty JSON można zagnieżdżać dowolnie, aby tworzyć jeszcze bardziej złożone obiekty: |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
Line 43: | Line 43: | ||
Sprawdź ten [[fcl-json#Traversing Items|link]], aby wyodrębnić informacje, gdy masz kilku użytkowników. | Sprawdź ten [[fcl-json#Traversing Items|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): | 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 <code>{ }</code>. Pusty obiekt może być reprezentowany przez <code>{ }</code> | * Obiekty JSON są otoczone nawiasami klamrowymi otwierającymi i zamykającymi <code>{ }</code>. Pusty obiekt może być reprezentowany przez <code>{ }</code> | ||
− | * Tablice są zamknięte w | + | * Tablice są zamknięte w nawiasy kwadratowe otwierające i zamykające <code>[ ]</code>. Pusta tablica może być reprezentowana przez <code>[ ]</code> |
* Pojedynczy element obiektu JSON reprezentowany jest przez parę klucz-wartość | * Pojedynczy element obiektu JSON reprezentowany jest przez parę klucz-wartość | ||
* Klucz elementu powinien być zawarty w podwójnych cudzysłowach | * Klucz elementu powinien być zawarty w podwójnych cudzysłowach | ||
Line 62: | Line 62: | ||
* Typ MIME dla plików JSON to '''application/json''' | * Typ MIME dla plików JSON to '''application/json''' | ||
− | == | + | == Implementacja == |
− | JSON | + | 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 [https://tools.ietf.org/html/rfc8259 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. <code> {name: "John Doe" }</code> |
− | # | + | #dopuszcza pojedyncze cudzysłowy dla kluczy i/lub wartości łańcuchowych; oraz toleruje mieszanie pojedynczych i podwójnych cudzysłowów, np. <code>{'name': "John Doe", "language":'Pascal'}</code> |
− | # | + | #zezwala na końcowy przecinek po ostatnim elemencie tablicy i/lub obiektu, np. <code>{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}</code> |
− | == | + | == Zobacz też == |
− | * [[fcl-json]] | + | * [[fcl-json/pl]] Pakiet implementujący JSON dla FreePascal i Lazarus |
− | * [http://www.json.org | + | * [http://www.json.org Oficjalna strona JSON] |
− | * [[Streaming JSON/de]] - ( | + | * [[Streaming JSON/de]] - (Oryginalny niemiecki artykuł) |
− | * [[Streaming JSON/ru]] - ( | + | * [[Streaming JSON/ru]] - (Tłumaczenie rosyjskie z angielskiego) |
− | * [[Streaming JSON/ko]] - ( | + | * [[Streaming JSON/ko]] - (Tłumaczenie koreańskie z angielskiego) |
− | * [[Streaming JSON]] - ( | + | * [[Streaming JSON]] - (Tłumaczenie na język angielski z oryginalnego niemieckiego) |
− | * [https://jsonformatter.org JSON | + | * [https://jsonformatter.org Formater JSON] |
[[Category:JSON]] | [[Category:JSON]] | ||
{{LngBarItem|Caption={{#language:ko}} (ru)|Link={{{NameWithoutSuffix}}}/ru}} | {{LngBarItem|Caption={{#language:ko}} (ru)|Link={{{NameWithoutSuffix}}}/ru}} |
Latest revision as of 13:31, 26 June 2020
│
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)]] │