J'avais l'habitude de gérer json en java, donc quand je cherchais une bibliothèque, on m'a dit comment l'utiliser: lunettes de soleil:
GitHub Il s'agit d'une bibliothèque publiée par square sur GitHub.
Il analyse JSON en classes et, à l'inverse, sérialise les classes en JSON. C'est facile à utiliser.
Usage
Gradle
compile 'com.squareup.moshi:moshi:1.5.0'
Il suffit d'ajouter
Parse
Créer une classe à analyser
class PersonList {
Map<String, Person> list;
}
class Person {
int age;
Sex sex;
}
enum Sex {
MAN,
WOMAN
}
Cliquez ici pour la partie à analyser
String json = "xxxxxxx";
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<PersonList> jsonAdapter = moshi.adapter(PersonList.class);
try {
PersonList personList = jsonAdapter.fromJson(json);
} catch (Exception e) {
Log.e("json parse error", "parsePersonList: ", e);
}
C'est ça (rires)
Serialize
Cliquez ici pour la partie sérialisation
PersonList list = /*Créer*/
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<PersonList> jsonAdapter = moshi.adapter(PersonList.class);
try {
String json = jsonAdapter.toJson(list);
} catch (Exception e) {
Log.e("json serialize error", "serializePersonList: ", e);
}
Presque les mêmes, mais fromJson ()
et toJson ()
ont changé
Caution
Veuillez noter que les classes qui peuvent être utilisées sont limitées.
ʻArrayList・
HashMap etc. ne peuvent pas être utilisés, alors utilisons
List・
Map`
・ Primitives (int, float, char ...) et leurs homologues encadrés (Integer, Float, Character ...). ・ Tableaux, collections, listes, ensembles et cartes ・ Cordes ・ Enums
CustomAdapter
class PersonAdapter {
@ToJson String toJson(Person person) {
return String.valueOf(person.age) + sex.suit.name().substring(0, 1);
}
@FromJson Person fromJson(String json) {
return //Analyser String et créer une classe Person
}
}
Je suis désolé d'avoir omis l'analyse des chaînes: sob:
Au fait, un autre
class ForthPerson {
int forthAge;
Sex sex;
}
S'il existe une classe de personnes quatre fois plus âgées que les gens ordinaires (rires), elle peut être convertie au moment de l'analyse
class ForthPersonAdapter {
@FromJson ForthPerson fromJson(Person person) {
ForthPerson forthPerson = new ForthPerson();
forthPerson.age = person.age * 4;
forthPerson.sex = person.sex;
return forthPerson;
}
@ToJson Person toJson(ForthPerson forthPerson) {
Person person = new Person();
person.age = forthPerson.age / 4;
person.sex = forthPerson.sex;
return person;
}
}
Moshi moshi = new Moshi.builder()
.add(new ForthPersonAdapter())
.build();
Vous pouvez l'utiliser maintenant!
Get List
Vous pouvez également obtenir un tableau de classes
String json = "xxxxxxx";
Type type = Types.newParameterizedType(List.class, Person.class);
JsonAdapter<List<Person>> adapter = moshi.adapter(type);
List<Person> people = adapter.fromJson(json);
Vous pouvez obtenir un tableau de classes Person
dans personnes