Saturday, January 17, 2009

GSON - Json in Java world from google

Saptamina aceasta am citit o noutate despre un nou realise beta a bibliotecii GSON pentru transformarea biderictionala a classelor Java in JSON notatii. Deci am reusit sa scriu despre acesta creatie de la gigantul software Google.
JSON este Java Script Object Notation, cu alte cuvinte este o reprezentare a obiectelor in JavaScript, pe linga obiecte mai pot fi reprezentate si alte tipuri de date. Acest link, http://www.json.org/, va vorbi mai mult despre JSON.
toJson(), fromJson() - simplitate la maxim pentru convertirea obiectelor in Json notatie si viceversa, acesta este primul punct forte al proiectului. Printre alte puncte forte se numara lipsa necistati de a avea acces la codul sursa a claselor Java, Java Generics, reprezentarea flexibila a obiectelor, etc.
Sa punem la cale un mic proiect.
Cu conversia tipurilor primitive in notatia JSON biblioteca s-a ispravit cu succes, iar iata atunci cind am ajus sa convertesc un obiect Java in JSON, care ar si fi functionabilitaea de baza a bibliotecii, am dat gres. Metoda toJson nici cum nu vroia sa converteasca clasa

class NewObject {
private int x = 1, y = 10, z = 100;
public NewObject() {
}
}

in notatia javascript, lugimea sirului de caractere (String) l-am obtinut 0. Probabil totusi fara un ritual nu se va scapa :(
Conversia inapoi la obiecte Java s-a ispravit, ce drept erau de tip primitiv :)

String sLong = g.toJson(new Long(847));
Long l = g.fromJson(sLong, Long.class);
System.out.println(l instanceof Long);

la afisare am primit true :)
Dupa cum ne zice Gson User Guide (http://sites.google.com/site/gson/gson-user-guide) conversia colectiilor Java se pot face astfel,
Gson gson = new Gson();
Collection ints = Lists.immutableList(1,2,3,4,5);
String json = gson.toString(ints);

iar procesul invers ar fi
Type collectionType = new TypeToken>(){}.getType();
Collection ints2 = gson.fromJson(collectionType, json);

User guide-ul mai arata citeva exemple de transformare in JSON notatie si invers a claselor generice, afisare de cod JSON in forme diferite, prety si compact.
Unii s-ar intreba pentru ce ne trebuie JSON, sunt multe situatii in care JSON poate fi util. Pot da doua exemple:
1. Pastrarea in fisier a informatiei. Da este XML, dar pastrind in formatul JSON obtinem dimensiuni mai mici comparativ cu XML.
2. Comunicare client-server. Iaras putem zice ca exista XML, dar exista si JSON.
In concluzie pot zice ca biblioteca merita atentie, iar faptul ca n-am reusit sa convertesc o simpla clasa in reprezentare necesara s-a datorat faptului ca poate undeva am gresit sau pe undeva au survenit niste erori (nu e perfect, e in curs de dezvoltare), sau eu nu i-am placut bibliotecii :)

No comments:

Post a Comment