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.
Se vuoi aggiornamenti su Android Studio inserisci la tua email nel box qui sotto: