JSON
- l`rby@
- Az@rbaycanca
- baaNlaa
- Belaruskaia
- B'lgarski
- Catala
- Cestina
- Deutsch
- Eesti
- Ellenika
- English
- Espanol
- Euskara
- frsy
- Francais
- Galego
- hangugeo
- Hayeren
- hindii
- Hrvatski
- Ido
- Bahasa Indonesia
- Italiano
- `bryt
- Kyrgyzcha
- Latviesu
- Lietuviu
- Magyar
- mlyaallN
- Bahasa Melayu
- Nederlands
- Ri Ben Yu
- Norsk bokmal
- O`zbekcha / uzbekcha
- Portugues
- Qaraqalpaqsha
- Romana
- Russkii
- Shqip
- Simple English
- Srpski / srpski
- Suomi
- Svenska
- tmilll
- aithy
- Turkce
- Ukrayins'ka
- Tieng Viet
- Yue Yu
- Zhong Wen
JavaScript Object Notation, JSON (wym. ['dZeIs@n]) - lekki format wymiany danych komputerowych. JSON jest formatem tekstowym, bazujacym na podzbiorze jezyka JavaScript. Typ MIME dla formatu JSON to application/json[1]. Format zostal opisany w dokumentach RFC 4627 |, ISO/IEC 21778:2017[2] oraz ECMA-404[3].
Pomimo nazwy, JSON jest formatem niezaleznym od konkretnego jezyka. Wiele jezykow programowania obsluguje ten format danych przez dodatkowe pakiety badz biblioteki. Wsrod nich sa ActionScript, C, C++, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, R, REBOL oraz Ruby.
Skladnia
[edytuj | edytuj kod]Komunikat JSON jest literalem obiektu jezyka Javascript, ktory w tym jezyku jest tablica asocjacyjna. Wszystkie dane sa zmiennymi (nie stanowia kodu wykonywalnego), a nazwy skladnikow (wlasciwosci) obiektow sa otoczone cudzyslowami. Wartosci moga byc typu string (napis otoczony cudzyslowem), number (liczba typu double), stanowic jedna ze stalych: false null true, byc tablica zlozona z takich elementow lub obiektem. Obiekty i tablice moga byc dowolnie zagniezdzane. Caly komunikat jest kodowany w unikodzie i domyslnie jest to UTF-8.
Przyklad
[edytuj | edytuj kod]"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}
}
Powyzsze dane zapisane w YAML-u:
id: file
popup:
menuitem:
- onclick: CreateNewDoc()
value: New
- onclick: OpenDoc()
value: Open
- onclick: CloseDoc()
value: Close
value: File
Powyzsze dane zapisane w XML-u:
Wykorzystanie
[edytuj | edytuj kod]JSON jest jednym z nieformalnych sposobow przekazywania danych do aplikacji opartych na AJAX. W typowych przypadkach dane w formacie JSON sa pobierane z serwera jako tekst przy wykorzystaniu obiektu XMLHttpRequest jezyka JavaScript, a nastepnie przeksztalcane w obiekt. Tekst powinien byc kodowany za pomoca UTF-8, ktory jest w JSON domyslny.
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 = JSON.parse(json_data); // zamiana tekstu na obiekt JSON
} else {
alert('Wystapil problem z wybranym adresem URL.');
}
http_request = null;
}
}
Powyzszy kod jest znaczaco uproszczony. Wykorzystany w tym przykladzie obiekt XMLHttpRequest nie jest dostepny we wszystkich przegladarkach. W normalnych warunkach uzywa sie dodatkowych funkcji lub metod przejsciowych.
Porownanie z XML-em i innymi jezykami znacznikow
[edytuj | edytuj kod]Dostep do danych w formacie JSON jest bardziej naturalny z poziomu jezyka JavaScript niz dostep do tych samych danych w formacie XML, poniewaz JSON stanowi skladniowy podzbior jezyka JavaScript. Wbrew podobienstwu w nazwie, nie jest juz jednak tak naturalny dla Javy i wymaga stosowania specjalnych bibliotek.
XML byl poczatkowo jedynym jezykiem w uslugach sieciowych, a wiec dominujacym przy sformalizowanej wymianie danych. Jednak w nowszych wersjach standardow dopuszczana jest takze wymiana danych za pomoca JSON-a (np. w REST).
XML moze byc latwiejszy przy czytaniu dowolnego fragmentu dokumentu - ze wzgledu na nazwe znacznika widoczna takze w koncowym znaczniku. Jednak z tego samego wzgledu XML w praktyce zajmuje znaczaco wiecej miejsca niz analogiczny obiekt przesylany za pomoca formatu JSON. Ilosc przesylanych danych jest z kolei szczegolnie istotna w zwiazku z duza popularnoscia urzadzen mobilnych (w szczegolnosci smartfonow).
YAML jest rowniez jezykiem serializacji danych i stanowi nadzbior jezyka JSON. JSON jest od niego jednak latwiejszy do analizowania skladni[4].
JSON.parse i bezpieczenstwo danych w przegladarkach
[edytuj | edytuj kod]Analiza skladniowa (ang. parsing) danych w formacie JSON w JavaScript jest mozliwe poprzez funkcje JSON.parse() lub eval(). Bezpieczniejsza jest jednak funkcja JSON.parse(). Zagrozenie polega na tym, ze funkcja eval() powoduje wykonanie dowolnego kodu, czyli takze takiego, ktory moze byc dowolnym poleceniem JavaScript, takze zlosliwym. Funkcja JSON.parse() nie jest na to wrazliwa, poniewaz sprawdza, czy analizowany ciag znakow jest prawidlowy i tylko wtedy przeksztalca go na obiekt danych.
Nalezy zwrocic przy tym uwage, ze funkcja JSON.parse() wprowadzona zostala dopiero wraz z piata wersja standardu ECMAScript i jest niedostepna w niektorych, starszych przegladarkach internetowych[5]. Dla takich przegladarek jak np. Internet Explorer 7 oraz 6 mozna jednak uzyc zastepnikow[6].
Zobacz tez
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- | The application/json Media Type for JavaScript Object Notation (JSON). datatracker.ietf.org, 2006-06. [dostep 2022-06-02]. (ang.).
- | ISO - ISO/IEC 21778:2017 - Information technology -- The JSON data interchange syntax. iso.org, 2017-11. [dostep 2022-06-02]. (ang.).
- | ECMA-404. ecma-international.org, 2017-12. [dostep 2022-06-02]. (ang.).
- | Bob Ippolito: What happened to YAML?. 2005-07-19. (ang.).
- | Can I use Json parsing. Can I use. (ang.).
- | Douglas Crockford: JSON in JavaScript. (ang.).
Linki zewnetrzne
[edytuj | edytuj kod]- Introducing JSON. (ang.).
- JSON-RPC. [dostep 2005-11-23]. [zarchiwizowane z tego adresu (2014-12-29)]. (ang.).
- D.D. Crockford D.D., The application/json Media Type for JavaScript Object Notation (JSON), RFC 4627, IETF, lipiec 2006, DOI: 10.17487/RFC4627, ISSN 2070-1721, OCLC 943595667 (ang.).
- JSON JavaScript Object Notation. Yahoo! groups. (ang.).
- Narzedzie do naprawy JSON
- AJAX without XML. Software Secret Weapons. [dostep 2016-05-04]. [zarchiwizowane z tego adresu (2016-03-26)]. (ang.).
- JSON Formatter. (ang.).
| Pakiet biurowy | |
|---|---|
| Glowne | |
| Niszowe |