[JAVA] Moshi ~ Json Konvertierungsbibliothek ~

Früher habe ich mit Java mit json umgegangen. Als ich nach einer Bibliothek suchte, wurde mir gesagt, wie man sie benutzt: Sonnenbrille:

Was ist Moshi?

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

Recommended Posts

Moshi ~ Json Konvertierungsbibliothek ~
Konvertieren Sie mit Moshi zwischen Java-Objekten und JSON
[Jackson] JSON⇔Objekt-Konvertierungsklasse