JSON
Z Wikipedii
JSON (wymawiane jak imię "Jason" -- jā'sən), to skrót od "JavaScript Object Notation". Jest to lekki format wymiany danych komputerowych. JSON ma tą przewagę nad formatem XML, że może być przetworzony w języku JavaScript w łatwy sposób z wykorzystaniem wbudowanej funkcji eval() tego języka.
Pomimo nazwy JSON jest niezależnym od konkretnego języka tekstowym formatem danych. Wiele języków programowania, w tym Perl, C, Python wspierają ten format danych poprzez dodatkowe pakiety bądź biblioteki. Wśród tych języków programowania są ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, REBOL oraz Ruby.
Spis treści |
[edytuj] Wykorzystanie
JSON jest bardzo przydatny jako format wymiany danych w programowaniu aplikacji opartych o model AJAX. Przykładowo
myObject = eval("return " + json_data);
W typowych przypadkach dane w formacie JSON są pobierane z serwera przy wykorzystaniu obiektu XMLHttpRequest języka JavaScript.
var http_request = new XMLHttpRequest(); var url = "http://serwer.pl/to/jest/tylko/test"; // adres z danymi w formacie JSON // pobierz dane w formacie JSON z serwera http_request.onreadystatechange = handle_json; http_request.open("GET", url, false); http_request.send(null); function handle_json() { if (http_request.readyState == 4) { if (http_request.status == 200) { var json_data = http_request.responseText; eval("var the_object = ("+json_data+")"); } else { alert('Wystąpił problem z wybranym adresem URL.'); } http_request = null; } }
Zauważ, że wykorzystanie w tym przykładzie obiektu XMLHttpRequest nie jest przenośne pomiędzy przeglądarkami! Obiekt XMLHttpRequest jest w tym przykładzie wykorzystywany synchronicznie, jednakże najczęstsze jego wykorzystanie jest asynchroniczne.
[edytuj] Przykład
{"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } }}
Powyższe dane zapisane w XML-u:
<menu id="file" value="File"> <popup> <menuitem value="New" onclick="CreateNewDoc()" /> <menuitem value="Open" onclick="OpenDoc()" /> <menuitem value="Close" onclick="CloseDoc()" /> </popup> </menu>
[edytuj] Porównanie z XML-em i innymi językami znaczników
Przy wykorzystaniu języka JavaScript, JSON jest łatwiejszy i szybszy do parsowania niż XML. Środowiska przetwarzania po stronie serwera wymagają instalacji pakietu bądź biblioteki pozwalającej na jego parsowania. Niektórzy programiści obeznani z językami programowania z rodziny języka C uważają, że JSON jest bardziej naturalny niż XML, natomiast inni uważają, że jego skąpa notacja jest myląca.
XML jest szerzej wspierany przez przemysł informatyczny i oferuje więcej narzędzi programistycznych do wykorzystania po stronie serwera. Dla każdego środowiska istnieje obecnie jedynie jeden, dwa parsery formatu JSON. Z drugjej strony, parsowanie po stronie klienta jest wspierane bezpośrednio przez funkcję eval() języka JavaScript.
Oba formaty nie udostępniają bogatego mechanizmu reprezentacji dużych ilości danych w postaci binarnej.
Bardziej szczegółowe porównanie formatów JSON i XML można znaleźć stronie http://www.crockford.com/JSON/example.html.
YAML, język serializacji danych wykorzystywany przez język Ruby jest nadzbiorem języka JSON. Jednakże JSON jest łatwiejszy do parsowania[1].
[edytuj] Inne uproszczone języki znacznikowe
- SOX (Simple Outline XML)
- YAML, który jest nadzbiorem JSON-a
- S-expression