Früher habe ich mit Java mit json umgegangen. Als ich nach einer Bibliothek suchte, wurde mir gesagt, wie man sie benutzt: Sonnenbrille:
GitHub Dies ist eine Bibliothek, die von square auf GitHub veröffentlicht wurde.
Es analysiert JSON in Klassen und serialisiert Klassen umgekehrt in JSON. Es ist einfach zu bedienen.
Usage
Gradle
compile 'com.squareup.moshi:moshi:1.5.0'
Einfach hinzufügen
Parse
Erstellen Sie eine Klasse zum Parsen
class PersonList {
Map<String, Person> list;
}
class Person {
int age;
Sex sex;
}
enum Sex {
MAN,
WOMAN
}
Klicken Sie hier, um den Teil zu analysieren
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);
}
Das war's (lacht)
Serialize
Klicken Sie hier für den Serialisierungsteil
PersonList list = /*Erstellen*/
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);
}
Fast das gleiche, aber fromJson ()
und toJson ()
haben sich geändert
Caution
Bitte beachten Sie, dass die Klassen, die verwendet werden können, begrenzt sind.
ArrayList
・ HashMap
usw. kann nicht verwendet werden, also verwenden wir List
・ Map
・ Grundelemente (int, float, char ...) und ihre Gegenstücke in Kästchen (Integer, Float, Character ...). ・ Arrays, Sammlungen, Listen, Sets und Karten ・ Saiten ・ Aufzählungen
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 //Analysieren Sie die Zeichenfolge und erstellen Sie eine Personenklasse
}
}
Es tut mir leid, dass ich die String-Analyse weggelassen habe: schluchzen:
Übrigens noch einer
class ForthPerson {
int forthAge;
Sex sex;
}
Wenn es eine Klasse von Menschen gibt, die viermal so alt sind wie normale Menschen (lacht), kann sie zum Zeitpunkt der Analyse konvertiert werden
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();
Sie können es jetzt verwenden!
Get List
Sie können auch eine Reihe von Klassen erhalten
String json = "xxxxxxx";
Type type = Types.newParameterizedType(List.class, Person.class);
JsonAdapter<List<Person>> adapter = moshi.adapter(type);
List<Person> people = adapter.fromJson(json);
Sie können eine Reihe von "Personen" -Klassen in "Personen" erhalten