ReVo Blog


 
Replying to Java 9 - Parser JSON
Nickname
Post Icons
                                     

                                   

Code Buttons

         
           FFUpload  Huppy Pick colour HTML Editor Help
Enter your Post
(Check Message Length)

Clickable Smilies
:huh:^_^:o:;):P:D
:lol::B)::rolleyes:-_-<_<:)
:wub::angry::(:unsure::wacko::blink:
:ph34r::alienff::cry::sick::shifty::woot:
<3:XD:*_*:];P:XP:
(:=)X):D:>.<>_<
=_=:|:?3_3:p:;_;
^U^*^^*:=/::*::b::f:
Show All


  
 


Last 10 Posts [ In reverse order ]
.ReVo.Posted: 19/8/2014, 14:45
Sembra che per Java 9 sarà integrato un parser JSON all'interno del framework stesso, ottima notizia no?

Beh, no.

Lo scopo di questo parser è quello di offrire un soluzione leggera e semplice per JSON e la frase

CITAZIONE
There are existing JSON APIs for Java. The most popular of these generally offer more functionality than the planned API and/or don't take advantage of Java 8/9 language and library features.

lo conferma. Le alternative di cui parla sono (le più famose): Gson e Jackson.

Leggendo la pagina ufficiale qui possiamo farci un'idea di come vorrebbero realizzarlo.

La mia domanda è: Perché?

Perché aggiungere un'altra alternativa al parsing JSON quando Gson e Jackson fanno già un ottimo lavoro? Certo, avere una soluzione integrata rimuovere la necessità di utilizzare una libreria esterna, ma perché realizzarla partendo già con l'idea che sarà inferiore alle alternative? Al momento, Gson fa un ottimo lavoro quando c'è bisogno di lavorare con JSON semplici:

CODICE
User user = new Gson().fromJson(json/reader, User.class);


Fatto! Il JSON è stato convertito nell'oggetto User senza fare altro!

È possibile realizzare un API che renda questo passaggio ancora più semplice?

E se i nomi dei campi JSON sono diversi da quelli della classe?

Basta mettere

CODICE
@SerializedName(nome_nel_json)


sopra il nostro campo ed il problema è risolto! (per non parlare delle altre annotazioni come Since, Until, Expose)

E se il vostro JSON diventa sempre più complesso, lavorare direttamente con il deserializer è praticamente un gioco da ragazzi!

Personalmente spero che non venga realizzato sulla stessa linea dei parser XML come SAX (ad eventi, come parla anche la pagina sul JSON) o DOM (che io apprezzo) in modo da evitare di dover aggiungere altra spazzatura all'interno della JDK (e poi essere costretti a mantenerla viva).

Ma dai, mancano ancora molti anni prima che potremmo avere Java 9 quindi speriamo bene.