Heim > Java > javaLernprogramm > Wie erstelle ich einen benutzerdefinierten JSON-Deserializer für Gson?

Wie erstelle ich einen benutzerdefinierten JSON-Deserializer für Gson?

Barbara Streisand
Freigeben: 2024-12-10 11:53:14
Original
473 Leute haben es durchsucht

How to Create a Custom JSON Deserializer for Gson?

Benutzerdefinierter JSON-Deserialisierer für Gson

Beim Empfang von JSON-Daten mit benutzerdefinierten Strukturen reicht der Standard-Deserialisierungsprozess von Gson möglicherweise nicht aus. In solchen Fällen ist ein benutzerdefinierter Deserialisierer erforderlich.

Betrachten Sie die folgende Java-Klasse, die einen Benutzer darstellt:

public class User {
    int id;
    String name;
    Timestamp updateDate;
}
Nach dem Login kopieren

Und eine JSON-Struktur, die eine Liste von Benutzern darstellt:

[{"id":1,"name":"Jonas","update_date":"1300962900226"},
{"id":5,"name":"Test","date_date":"1304782298024"}]
Nach dem Login kopieren

Um dieses JSON in Benutzerinstanzen zu deserialisieren, kann ein benutzerdefinierter Deserialisierer verwendet werden definiert:

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;
import java.sql.Timestamp;

public class UserDeserializer implements JsonDeserializer<User> {
    @Override
    public User deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
        throws JsonParseException {
        long time = json.getAsJsonPrimitive().getAsLong();
        return new User(
            json.get("id").getAsInt(),
            json.get("name").getAsString(),
            new Timestamp(time));
    }
}
Nach dem Login kopieren

Dieser Deserialisierer analysiert den JSON in eine Benutzerinstanz und berücksichtigt dabei die angegebenen Feldnamen und die benutzerdefinierte Zeitstempelanalyse.

Um diesen Deserialisierer auf die Gson-Instanz anzuwenden, verwenden Sie die registerTypeAdapter-Methode:

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(User.class, new UserDeserializer());
Gson gson = gsonBuilder.create();
Nach dem Login kopieren

Jetzt kann der JSON mithilfe von in eine Liste von Benutzerinstanzen deserialisiert werden modifizierte Gson-Instanz.

Das obige ist der detaillierte Inhalt vonWie erstelle ich einen benutzerdefinierten JSON-Deserializer für Gson?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage