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):

 

<?xml version="1.0" encoding="utf-8"?>

    <dane>

        <user>

            <imie>jan</imie>

            <nazwisko>Kowalski</nazwisko>

        </user>

        <user>

            <imie>Piotr</imie>

            <nazwisko>Nowak</nazwisko>

        </user>

    </dane> 


W JSON dane takie wyglądały następująco:
 

{

    "dane" : {

        "user" : [

            {

            "imie" : "Jan",

            "nazwisko" : "Kowalski"

            },

            { 

            "imie" : "Piotr",

            "nazwisko" : "Nowak"

            }

        ]

    }

} 


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:
 

/*     Stworzenie obiektu XMLHttpRequest 

    wysłanie odpowiednich danych na serwer i uzykanie odpowiedzi:

*/

    var json_tekst = HTTPrequest.responseText; // uzyskuje dane w postaci ciągu znaków 

    eval("var json_obiekt = ("+json_tekst+")");


    for (i=0; i<json_obiekt.dane.user.length; i++)

        alert(    json_obiekt.dane.user[i].imie + ' ' +

                 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/