diff options
Diffstat (limited to 'files/pl/glossary/json/index.html')
-rw-r--r-- | files/pl/glossary/json/index.html | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/files/pl/glossary/json/index.html b/files/pl/glossary/json/index.html new file mode 100644 index 0000000000..6d023ee69c --- /dev/null +++ b/files/pl/glossary/json/index.html @@ -0,0 +1,59 @@ +--- +title: JSON +slug: JSON +translation_of: Glossary/JSON +--- +<p><strong>JSON</strong> (<strong>JavaScript Object Notation</strong>) jest formatem wymiany danych. Przypomina podzbiór składni <a href="/pl/docs/JavaScript">JavaScriptu</a>, choć nie jest nim w ścisłym sensie tego terminu. (Zobacz <a href="https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/JSON" title="en/JavaScript/Reference/Global Objects/JSON">JSON</a> w <a href="https://developer.mozilla.org/en/JavaScript/Reference" title="en/JavaScript/Reference">Dokumentacji JavaScript</a> aby poznać szczegóły). Użyteczny w dowolnym rodzaju aplikacji opartej o JavaScript, m.in. na stronach internetowych i w rozszerzeniach przeglądarek. Przykładowo, dane użytkownika w formacie JSON mogą być przechowywane w <a href="/pl/docs/DOM/document.cookie">ciasteczku</a> (cookie), zaś preferencje rozszerzenia mogą być przechowywane w formacie JSON przez przeglądarkę.</p> +<p>JSON może przechowywać liczby (<code>number</code>), wartości logiczne (<code>boolean</code>), ciagi znaków (<code>string</code>), <code>null</code>, tablice (uporządkowane sekwencje wartości) oraz obiekty (zbiory odwzorowań ciąg znaków-wartość) złożone z powyższych wartości (lub z innych tablic i obiektów). Nie definiuje naturalnej reprezentacji dla bardziej złożonych typów danych, jak funkcje, wyrażenia regularne, daty itd. (Obiekty typu Date są domyślnie serializowane w postaci ciągu znaków zawierającego datę w formacie ISO, zatem choć nie zostają odtworzone w oryginalnym formacie, informacja nie jest bezpowrotnie tracona). Gdy niezbędne jest przechowanie tego rodzaju danych, można przekształcić wartości w momencie serializacji, lub przed ich deserializacją, umożliwiając w ten sposób przechowanie w JSON dodatkowych typów danych.</p> +<h2 id="JSON_in_Firefox_2" name="JSON_in_Firefox_2">Użycie JSON poprzez obiekt JSON w JavaScripcie</h2> +<p>Najprościej użyć JSON za pośrednictwem standardowego <a href="/en/JavaScript/Reference/Global_Objects/JSON" title="en/JavaScript/Reference/Global Objects/JSON">obiektu JSON</a> w JavaScripcie. Użyj <a href="/en/JavaScript/Reference/Global_Objects/JSON/stringify" title="en/JavaScript/Reference/Global Objects/JSON/stringify">JSON.stringify</a> do serializacji wartości w formacie JSON, natomiast do deserializacji - <a href="/en/JavaScript/Reference/Global_Objects/JSON/parse" title="en/JavaScript/Reference/Global Objects/JSON/parse">JSON.parse</a>.</p> +<p>Na przykład, do serializacji obiektu JavaScript używamy metody <code>JSON.stringify()</code>:</p> +<pre class="brush: js">var foo = {}; +foo.bar = "new property"; +foo.baz = 3; + +var JSONfoo = JSON.stringify(foo); +</pre> +<p><code>JSONfoo</code> ma teraz postać <code>{"bar":"new property","baz":3}</code>. Aby przywrócić <code>JSONfoo</code> do postaci obiektu JavaScript wystarczy wykonać:</p> +<pre class="brush: js">var backToJS = JSON.parse(JSONfoo); +</pre> +<p>Więcej informacji znajdziesz w dokumentacji <a href="/en/JavaScript/Reference/Global_Objects/JSON" title="en/JavaScript/Reference/Global Objects/JSON">obiektu JSON</a>.</p> +<h2 id="Metoda_toJSON()">Metoda toJSON()</h2> +<p>Jeśli obiekt definiuje metodę toJSON(), wówczas JSON.stringify wywoła tę metodę aby określić reprezentację obiektu w formacie JSON. Na przykład:</p> +<pre class="brush: js">x = {}; +x.foo = "foo"; +x.toJSON = function() { return "bar"; }; +var json1 = JSON.stringify(x); +</pre> +<p><code>json1</code> zawiera teraz '"bar"'.</p> +<h2 id="Ograniczenia">Ograniczenia</h2> +<p>Nie można serializować obiektu zawierającego funkcje. Specyfikacja JSON nie pozwala na takie działanie. Na przykład:</p> +<pre class="brush: js">foo.qwerty = function(){alert('foobar');}; +foo.qwerty() +var JSONfoo = JSON.toString(foo); +</pre> +<p>zwróci błąd <code>TypeError on line XXX: No JSON representation for this object!</code></p> +<h2 id="Użycie_JSON_poprzez_nsIJSON">Użycie JSON poprzez nsIJSON</h2> +<p>Wersje Firefoksa wcześniejsze niż 3.5 nie zawierały wsparcia dla formatu JSON, zaś jedynym sposobem dotarcia do funkcjonalności JSON było wykorzystanie komponentu <code><a href="/en/XPCOM_Interface_Reference/nsIJSON" title="en/nsIJSON">nsIJSON</a></code>, dostępnego począwszy od Firefox 3. Kodowanie i dekodowanie wykonywane są przez metody <code>encode</code> i <code>decode</code> komponentu <code>nsIJSON</code>. Metody te zakresem możliwości ustępują metodom dostarczanym przez obiekt JSON, zapewniając wsparcie jedynie tablicom i obiektom, z pominięciem ciągów znaków, wartości logicznych, liczb, czy <code>null</code>. (Wymienione wartości są obsługiwane jedynie wewnątrz tablic i obiektów: sama liczba <code>5</code> nie zadziała, lecz obiekt <code>{ "value": 5 }</code> już tak).</p> +<p>Ze względu na ograniczenia nsIJSON, jego metody encode i decode zostały usunięte począwszy od wersji Firefox 7. Deweloperom zaleca się używanie obiektu JSON.</p> +<p>Poniższy kod serializuje obiekt JavaScript przy użyciu<code> nsIJSON</code>:</p> +<pre class="brush: js">var Ci = Components.interfaces; +var Cc = Components.classes; + +var foo = {}; +foo.bar = "new property"; +foo.baz = 3; + +var nativeJSON = Cc["@mozilla.org/dom/json;1"].createInstance(Ci.nsIJSON); +var JSONfoo = nativeJSON.encode(foo); +</pre> +<p>Zmienna <code>JSONfoo</code> przyjmuje teraz wartość <code>{"bar":"new property","baz":3}</code>. Aby stworzyć obiekt odpowiadający <code>JSONfoo</code>, wystarczy wykonać:</p> +<pre class="brush: js">var backToJS = nativeJSON.decode(JSONfoo); +</pre> +<h2 id="Using_JSON" name="Using_JSON">Inne sposoby użycia JSON</h2> +<p>Choć teoretycznie możliwe jest użycie JSON korzystając z <a href="/en/JavaScript/Reference/Global_Objects/eval" title="en/JavaScript/Reference/Global Objects/eval">eval</a> (lecz tylko do deserializacji do obiektu, nie do serializacji do postaci ciągu znaków), lub z <a class="link-https" href="https://github.com/douglascrockford/JSON-js" title="https://github.com/douglascrockford/JSON-js">json2.js</a>, nie jest to dobrym pomysłem. Parsowanie JSON przy użyciu eval nie jest bezpieczne, gdyż eval dopuszcza znacznie więcej rodzajów składni niż JSON (w tym nawet wykonywanie całkiem arbitralnego fragmentu kodu). Z kolei problemem json2.js jest dodawanie metod do wbudowanych obiektów, jak <code>Object.prototype</code>, co może skutkować błędami w kodzie, w którym nie przewidziano z góry takiej możliwości. Dlatego w niemal wszystkich przypadkach zaleca się pozostanie przy normalnych metodach użycia JSON. </p> +<h2 id="See_also" name="See_also">Zobacz także</h2> +<ul> + <li>{{ interface("nsIJSON") }}</li> +</ul> +<p>{{ languages( { "ja": "ja/JSON", "zh-cn": "zh-cn/JSON" } ) }}</p> |