JSON – Lekki Format Wymiany Danych
JSON (JavaScript Object Notation) to tekstowy format wymiany danych, oparty na podzbiorze języka JavaScript. Jest niezależny od konkretnego języka programowania, co sprawia, że wiele języków, takich jak Python, Java, PHP, czy Ruby, oferuje wsparcie dla JSON-a poprzez różne biblioteki.
Wykorzystanie JSON
JSON jest często stosowany do przesyłania danych w aplikacjach opartych na AJAX. Dane są zwykle pobierane z serwera jako tekst i przekształcane w obiekt JavaScript. Standardowym kodowaniem jest UTF-8.
var http_request = new XMLHttpRequest();
var url = "http://serwer.pl/to/jest/tylko/test";
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;
var the_object = JSON.parse(json_data);
} else {
alert('Wystąpił problem z wybranym adresem URL.');
}
}
}
Powyższy kod jest uproszczonym przykładem. Obiekt XMLHttpRequest nie jest dostępny we wszystkich przeglądarkach, co często wymaga użycia dodatkowych metod.
Składnia JSON
JSON stosuje literały obiektów, gdzie dane są reprezentowane jako pary klucz-wartość. Klucze są otoczone cudzysłowami, a wartości mogą być różnego typu, w tym stringami, liczbami, tablicami czy obiektami. Cała struktura jest zapisywana w formacie UTF-8.
Przykład JSON
{
"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}
}
Porównanie z XML
Dostęp do danych w JSON jest prostszy w JavaScript w porównaniu do XML, ponieważ JSON jest jego podzbiorem. Choć XML był kiedyś dominującym formatem w usługach sieciowych, JSON zyskuje na popularności, zwłaszcza w kontekście REST.
JSON zajmuje mniej miejsca niż XML, co jest istotne w przypadku urządzeń mobilnych. YAML, będący nadzbiorem JSON, jest bardziej złożony i trudniejszy do analizy niż JSON.
Bezpieczeństwo w JSON
Analiza danych JSON w JavaScript odbywa się za pomocą funkcji JSON.parse()
, która jest bezpieczniejsza niż eval()
, która może wykonywać złośliwy kod JavaScript. JSON.parse()
wprowadzono w piątej wersji ECMAScript i może nie być dostępna w starszych przeglądarkach, ale istnieją alternatywy dla takich przypadków.