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
Barbara StreisandOriginal
2024-12-10 11:53:14455Durchsuche

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;
}

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

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

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));
    }
}

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();

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!

Stellungnahme:
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