Difference between revisions of "JSON/pl"

From Free Pascal wiki
Jump to navigationJump to search
(→‎Overview: tłumaczenie na j. polski)
 
(12 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 prostego tekstu. Jak sama nazwa wskazuje, jest oparty na podstawie języka programowania [[JavaScript]]; jest jednak całkowicie niezależny od języka. Oprócz tego, że ludzie mogą go łatwo czytać i pisać pliki JSON, to maszyny również są w stanie parsować i generować te pliki.
+
[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.
  
== JSON Object ==
+
== Obiekt JSON ==
A JSON Object is nothing more than a collection of comma-separated name/value pairs (often called members) enclosed in curly brackets:
+
Obiekt JSON to nic innego jak zbiór oddzielonych przecinkami par nazwa/wartość (często nazywanych elementami) ujętych w nawiasy klamrowe:
  
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
Line 13: Line 13:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
To make it easier for humans to read and visualize, the name/value pairs are often listed vertically:
+
Aby ułatwić ludziom czytanie i wizualizację JSON, pary nazwa/wartość są często wymienione pionowo:
  
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
Line 21: Line 21:
 
}</syntaxhighlight>
 
}</syntaxhighlight>
  
The name is supposed to be a string in double quotes, while the value can be any of the following:
+
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:
  
* a simple string, numeric, boolean or null value (strings are enclosed in double quotes):<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>
  
* an array; which is a collection of comma-separated values in square brackets:<br /><code>{"primeNumbers":[2, 3, 5, 7, 11, 13, 17], "oddNumbers":[1,3,5,7]}</code>
+
* 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>
  
* an object; which is a collection of name:value pairs enclosed in curly brackets:<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 zagnieżdżać dowolnie, aby tworzyć jeszcze bardziej złożone obiekty:
JSON objects can always be nested arbitrarily to create even more complex objects:
 
  
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
Line 42: Line 41:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Check this [[fcl-json#Traversing Items|link]] for extracting the information when you have several users.
+
Sprawdź ten [[fcl-json#Traversing Items|link]], aby wyodrębnić informacje, gdy masz kilku użytkowników.
  
== Valid JSON format ==
+
== Prawidłowy format JSON ==
  
There are a few rules and guidelines that define the JSON syntax (see RFC 4627):
+
Istnieje kilka zasad i wytycznych, które definiują składnię JSON (patrz RFC 4627):
  
* JSON objects are encapsulated within opening and closing brackets <code>{ }</code>. An empty object can be represented by <code>{ }</code>
+
* Obiekty JSON są otoczone nawiasami klamrowymi otwierającymi i zamykającymi <code>{ }</code>. Pusty obiekt może być reprezentowany przez <code>{ }</code>
* Arrays are encapsulated within opening and closing square brackets <code>[ ]</code>. An empty array can be represented by <code>[ ]</code>
+
* Tablice są zamknięte w nawiasy kwadratowe otwierające i zamykające <code>[ ]</code>. Pusta tablica może być reprezentowana przez <code>[ ]</code>
* A member is represented by a key-value pair
+
* Pojedynczy element obiektu JSON reprezentowany jest przez parę klucz-wartość
* The key of a member should be contained in double quotes
+
* Klucz elementu powinien być zawarty w podwójnych cudzysłowach
* Each member SHOULD have a unique key within an object structure
+
* Każdy element POWINIEN mieć unikalny klucz w strukturze obiektu
* The value of a member must be contained in double quotes if it is a string
+
* Wartość elementu musi być zawarta w podwójnych cudzysłowach, jeśli jest to ciąg znaków
* Boolean values are represented using the '''true''' or '''false''' literals in lower case
+
* Wartości Boolean są reprezentowane za pomocą literałów '''true''' lub '''false''' zapisane małymi literami
* Number values are represented using double-precision floating-point format; Scientific notation is supported; Numbers should not have leading zeroes
+
* 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
* "Offensive" characters in a string need to be escaped using the backslash character
+
* Znaki „specjalne” w ciągu muszą być poprzedzone znakiem odwrotnego ukośnika
* Null values are represented by the '''null''' literal in lower case
+
* Wartości Null są reprezentowane przez literał '''null''' zapisany małymi literami
* Other object types, such as dates, are not natively supported and should be converted to strings; to be managed by the parser/client
+
* 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
* Each member of an object or each array value must be followed by a comma if it is not the last one
+
* Po każdym elemencie obiektu lub każdej wartości tablicy musi znajdować się przecinek, jeśli nie jest to ostatni element
* The common extension for json files is '''.json'''
+
* Typowym rozszerzeniem plików JSON jest '''.json'''
* The MIME type for json files is '''application/json'''
+
* Typ MIME dla plików JSON to '''application/json'''
  
== Implementations ==
+
== Implementacja ==
JSON implementation is not very strict, and a lot of leeway is granted to the client application and/or parser to enforce the guidelines. As usual when writing code:
+
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
* be liberal in what you accept
+
* bądź tolerancyjny w tym, co akceptujesz
* be strict (adhering to the standard) in what you send.
+
* bądź rygorystyczny (przestrzegając standardu) w tym co wysyłasz.
  
There are two main implementations of JSON:
+
Istnieją dwie główne implementacje JSON:
  
=== The official JSON Specification syntax ===
+
=== Oficjalna składnia specyfikacji JSON ===
This implementation adheres strictly to the RFC 4627 guidelines above and does not allow deviation from the specification.
+
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.
  
=== The Javascript syntax ===
+
=== Składnia JavaScript ===
This implementation follows the implementation of the Javascript programming language and as such allows for a few deviations from the official specification. For example:
+
Ta implementacja wynika z implementacji języka programowania JavaScript i jako taka pozwala na kilka odchyleń od oficjalnej specyfikacji. Na przykład:
  
#allows un-quoted keys eg <code> {name: "John Doe" }</code>
+
#dopuszcza klucze bez cudzysłowu, np. <code> {name: "John Doe" }</code>
#allows single quotes for keys and/or string values; and a liberal mix of single and double quotes eg <code>{'name': "John Doe", "language":'Pascal'}</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>
#allows trailing comma after the last member of an array and/or object eg <code>{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}</code>
+
#zezwala na końcowy przecinek po ostatnim elemencie tablicy i/lub obiektu, np. <code>{"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}</code>
  
== See also ==
+
== Zobacz też ==
  
* [[fcl-json]] package that implements JSON for FreePascal and Lazarus
+
* [[fcl-json/pl]] Pakiet implementujący JSON dla FreePascal i Lazarus
* [http://www.json.org Official JSON website]
+
* [http://www.json.org Oficjalna strona JSON]
* [[Streaming JSON/de]] - (Original German article)
+
* [[Streaming JSON/de]] - (Oryginalny niemiecki artykuł)
* [[Streaming JSON/ru]] - (Russian translation from English )
+
* [[Streaming JSON/ru]] - (Tłumaczenie rosyjskie z angielskiego)
* [[Streaming JSON/ko]] - (korean translation from English )
+
* [[Streaming JSON/ko]] - (Tłumaczenie koreańskie z angielskiego)
* [[Streaming JSON]]  - (English translation from original German)
+
* [[Streaming JSON]]  - (Tłumaczenie na język angielski z oryginalnego niemieckiego)
* [https://jsonformatter.org JSON Formatter]
+
* [https://jsonformatter.org Formater JSON]
  
 
[[Category:JSON]]
 
[[Category:JSON]]
 
{{LngBarItem|Caption={{#language:ko}}&nbsp;(ru)|Link={{{NameWithoutSuffix}}}/ru}}
 
{{LngBarItem|Caption={{#language:ko}}&nbsp;(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:

  1. dopuszcza klucze bez cudzysłowu, np. {name: "John Doe" }
  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'}
  3. zezwala na końcowy przecinek po ostatnim elemencie tablicy i/lub obiektu, np. {"keywords":["if","begin","for",], "IDEs":["Lazarus","fpIDE","MSEide"],}

Zobacz też

[[:{{{NameWithoutSuffix}}}/ru|한국어 (ru)]]