JSON
JSON, JavaScript Object Notation (wym. ˈdʒeɪsən) – lekki format wymiany danych komputerowych. JSON jest formatem tekstowym, będącym podzbiorem języka JavaScript. Typ MIME dla formatu JSON to application/json. Format został opisany w dokumencie RFC 4627.
Pomimo nazwy JSON jest formatem niezależnym od konkretnego języka. Wiele języków programowania obsługuje ten format danych przez dodatkowe pakiety bądź biblioteki. Wśród nich są ActionScript, C, C++, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, REBOL oraz Ruby.
Spis treści |
[edytuj] Wykorzystanie
JSON jest jednym z nieformalnych sposobów przekazywania danych do aplikacji opartych o AJAX. W typowych przypadkach dane w formacie JSON są pobierane z serwera jako tekst przy wykorzystaniu obiektu XMLHttpRequest języka JavaScript, a następnie przekształcane w obiekt.
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); http_request.send(null); function handle_json() { if (http_request.readyState == 4) { if (http_request.status == 200) { var json_data = http_request.responseText; // pobranie tekstu var the_object = eval("("+json_data+")"); // zamiana tekstu na obiekt JSON } else { alert('Wystąpił problem z wybranym adresem URL.'); } http_request = null; } }
Powyższy kod jest znacząco uproszczony. Wykorzystany w tym przykładzie obiekt XMLHttpRequest nie jest dostępny we wszystkich przeglądarkach. W normalnych warunkach używa się dodatkowych funkcji lub metod przejściowych.
[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
| Ten artykuł od 2011-11 wymaga uzupełnienia źródeł podanych informacji. Informacje nieweryfikowalne mogą zostać zakwestionowane i usunięte. Aby uczynić artykuł weryfikowalnym, należy podać przypisy do materiałów opublikowanych w wiarygodnych źródłach. |
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.
XML jest szerzej obsługiwany przez przemysł informatyczny, przez co istnieje więcej narzędzi programistycznych do wykorzystania po stronie serwera. Analizowanie danych po stronie klienta jest obsługiwane 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.
YAML, język serializacji danych, jest nadzbiorem języka JSON. JSON jest od niego jednak łatwiejszy do parsowania[1].