JSON Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
poniedziałek, 21 września 2009 21:20

JSON, to nie tyle technologia czy nowy język co inne spojrzenie na to co już istnieje. Być może nawet samo odkodowanie tego skrótu da już nam dużo więcej informacji: "Java Script Object Notation", czyli format wymiany danych, podobnie jak XML. Jednak XML (eXtensible Markup Language) ma w porównaniu z JSONem [wymawiane jak angielskie imię "dżejson"] jeden minus – do jego wykorzystania w projektach webmasterkich najczęściej potrzebujemy dodatkowych klas i obiektów (o czym więcej w poradzie klasa ObjTree).
JSON w JS może być szybko przetworzony w JS za pomocą funkcji eval(). Może zatem przykład danych:
(najpierw – trochę bardziej zrozumiałe, dla webmastera, dane w formacie XML):

01.<?xml version="1.0" encoding="utf-8"?>
02. 
03.    <dane>
04. 
05.        <user>
06. 
07.            <imie>jan</imie>
08. 
09.            <nazwisko>Kowalski</nazwisko>
10. 
11.        </user>
12. 
13.        <user>
14. 
15.            <imie>Piotr</imie>
16. 
17.            <nazwisko>Nowak</nazwisko>
18. 
19.        </user>
20. 
21.    </dane>


W JSON dane takie wyglądały następująco:
01.{
02. 
03.    "dane" : {
04. 
05.        "user" : [
06. 
07.            {
08. 
09.            "imie" : "Jan",
10. 
11.            "nazwisko" : "Kowalski"
12. 
13.            },
14. 
15.            {
16. 
17.            "imie" : "Piotr",
18. 
19.            "nazwisko" : "Nowak"
20. 
21.            }
22. 
23.        ]
24. 
25.    }
26. 
27.}


Przyjmijmy, że stosując AJAX takie dane otrzymujemy jako wynik działania skryptu na serwerze. W przypadku XML pewnie skorzystamy z metody responseXML() i następnie będziemy się bawić z odpowiednim pobieraniem danych – dla początkujące moze to być naprawdę niezbyt przyjemne (jeśli się korzysta z gołego obiektu XMLHttpRequest). W przypadku JSONa, polecałbym coś takiego:
01./*     Stworzenie obiektu XMLHttpRequest
02. 
03.    wysłanie odpowiednich danych na serwer i uzykanie odpowiedzi:
04. 
05.*/
06. 
07.    var json_tekst = HTTPrequest.responseText; // uzyskuje dane w postaci ciągu znaków
08. 
09.    eval("var json_obiekt = ("+json_tekst+")");
10. 
11. 
12.    for (i=0; i<json_obiekt.dane.user.length; i++)
13. 
14.        alert(    json_obiekt.dane.user[i].imie + ' ' +
15. 
16.                 json_obiekt.dane.user[i].nazwisko        );

Oczywiście to tylko drobna część możliwości JSONa. Warto jednak o nim pamiętać, jeśli przyjdzie nam robić cokolwiek z danymi otrzymywanymi z serwera [niekoniecznie naszego, coraz częściej potrzebujemy danych z „obcych” serwerów].

Warto byłoby także zapoznać się z:

  • pl.wikipedia.org/wiki/JSON
  • json.com
  • anakin.us/blog/advancedajax-112-ajax-json/