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
Dostęp do danych w formacie JSON jest łatwiejszy i szybszy z poziomu języka JavaScript niż dostęp do tych samych danych w formacie XML. Również analiza składniowa takich danych jest prostsza.
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 przez co istnieje więcej narzędzi programistycznych do wykorzystania po stronie serwera. Ilość analizatorów formatu JSON nie jest na razie imponująca i wynosi średnio jeden do dwóch w danym środowisku. Z drugiej strony, analizowanie danych po stronie klienta jest wspierane bezpośrednio przez funkcję eval() języka JavaScript.
Żaden z tych formatów nie udostępnia 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 jest nadzbiorem języka JSON. Jednakże JSON jest łatwiejszy do parsowania[1].