Maison >Java >javaDidacticiel >Comment créer un désérialiseur JSON personnalisé pour Gson ?

Comment créer un désérialiseur JSON personnalisé pour Gson ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 11:53:14499parcourir

How to Create a Custom JSON Deserializer for Gson?

Désérialiseur JSON personnalisé pour Gson

Lors de la réception de données JSON avec des structures personnalisées, le processus de désérialisation par défaut de Gson peut ne pas suffire. Dans de tels cas, un désérialiseur personnalisé est nécessaire.

Considérez la classe Java suivante représentant un utilisateur :

public class User {
    int id;
    String name;
    Timestamp updateDate;
}

Et une structure JSON représentant une liste d'utilisateurs :

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

Pour désérialiser ce JSON en instances utilisateur, un désérialiseur personnalisé peut être défini :

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

Ceci le désérialiseur analyse le JSON dans une instance utilisateur, en tenant compte des noms de champs spécifiés et de l'analyse de l'horodatage personnalisé.

Pour appliquer ce désérialiseur à l'instance Gson, utilisez la méthode registerTypeAdapter :

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

Désormais, le JSON peut être désérialisé en une liste d'instances utilisateur à l'aide de l'instance Gson modifiée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn