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
Libérer: 2024-12-10 11:53:14
original
473 Les gens l'ont consulté

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;
}
Copier après la connexion

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

[{"id":1,"name":"Jonas","update_date":"1300962900226"},
{"id":5,"name":"Test","date_date":"1304782298024"}]
Copier après la connexion

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));
    }
}
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal