Kripton consente di rendere persistenti le istanze di una particolare classe con
l'annotazione @BindType
. Prendiamo ad esempio la classe User
così definita:
@BindType
public class User {
public long id;
public String name;
public String username;
public String email;
public String phone;
public String website;
}
L'annotazione @BindType
viene utilizzata dal processore di annotazione di Kripton per generare il codice necessario a convertire
gli oggetti di tipo Java nei formati dati supportati da Kripton e viceversa. I formati supportati da Kriptono sono: JSON, XML,
YAML, CBOR, (Java) properties e SMILE. Il codice per convertire un oggetto User
in formato JSON è:
User user = new User();
user.name = "name1";
user.email = "dummy@gmail.com";
user.id=1;
user.phone="032123456";
user.website="http://www.html.it";
String file=context.getFilesDir().getPath()+"/test.json";
BinderContext binder = KriptonBinder.jsonBind();
binder.serialize(user, new File(file));
Il risultato del codice è che nel file test.json
verrà inserita la rappresentazione nel formato JSON dell'istanza dell'oggetto user.
{"email":"dummy@gmail.com","id":1,"name":"name1","phone":"032123456","website":"http://www.html.it"}
Vediamo ora il codice per leggere da un file di tipo JSON la rappresentazione di un oggetto di tipo User
:
String file=context.getFilesDir().getPath()+"/test.json";
BinderContext binder = KriptonBinder.jsonBind();
// nella conversione dobbiamo specificare il tipo di oggetto che vogliamo convertire
User user2=binder.parse(new File(file), User.class);
Kripton gestisce la conversione di tutti gli attributi di tipo primitivo, stringhe, array, collezioni di oggetti e
singoli oggetti
annotati con annotazione @BindType
. E' inoltre possibile raffinare la conversione di un particolare file mediante
l'annotazione @Bind
.
Kripton: conversione di altri formati dati
Nella sezione precedente abbiamo visto come sia possibile convertire un oggetto Java in JSON e viceversa con Kripton.
Come è
possibile osservare dal codice associato, la conversione di oggetti Java da e verso i vari formati dati avviene
mediante la creazione di un BinderContext
istanziabile dalla classe KriptonBinder
.
Esiste un binder per ogni tipo di formato dati supportato da Kripton. Di base, Kripton offre i contesti di
conversione per i formati JSON ed XML.
Per gli altri formati dati supportati da Kripton è necessario includere il relativo artifact e utilizzare il relativo
BinderContext
. Per convertire un oggetto Java in formato YAML è necessario scrivere:
// inizializziamo il contesto YAML
BinderContext binder = KriptonBinder.bind(BinderType.YAML);
binder.serialize(user, new File(file));
Per l'operazione inversa è sufficiente scrivere:
// inizializziamo il contesto YAML
BinderContext binder = KriptonBinder.bind(BinderType.YAML);
binder.parse(new File(file), User.class);
Per tutti gli altri formati, il codice per la conversione è praticamente identico, quello che cambia è il tipo di
contesto di binding.
Formato dati | Libreria da includere | BinderContext |
---|---|---|
JSON | BinderType.JSON |
|
XML | BinderType.XML |
|
YAML | com.abubusoft:kripton-dataformat-yaml:3.1.0 |
BinderType.YAML |
CBOR | com.abubusoft:kripton-dataformat-cbor:3.1.0 |
BinderType.CBOR |
PROPERTIES | com.abubusoft:kripton-dataformat-properties:3.1.0 |
BinderType.PROPERTIES |
SMILE | com.abubusoft:kripton-dataformat-smile:3.1.0 |
BinderType.SMILE |
Kripton consente di gestire la conversione in tutti questi formati grazie al fatto che si basa su
un'altra libreria Java open source multi formato: FasterXML-jackson.