Gson Deserializer pour java.util.Date
Quelqu'un a obtenu Deserializer de travail? je suis arriver complète JSON expression dans la méthode "désérialiser" au lieu de l'élément??
public static void main(String[] args) {
GsonBuilder gb = new GsonBuilder();
gb.registerTypeAdapter(DummyObject.class, new JsonSerializer<Date>() {
public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
System.out.println("serialize...");
return new JsonPrimitive(DateUtil.toString(src));
}
});
gb.registerTypeAdapter(DummyObject.class, new JsonDeserializer<Date>() {
DateFormat format = DateFormat.getInstance();
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
if (!(json instanceof JsonPrimitive)) {
throw new JsonParseException("The date should be a string value");
}
try {
return format.parse(json.getAsString());
} catch (ParseException e) {
throw new JsonParseException(e);
}
}
});
String jsonExp = "{\"createdDate\":\"2011-12-27T15:21:16\"}";
Gson g = gb.create();
DummyObject tf = g.fromJson(jsonExp, DummyObject.class);
}
source d'informationauteur gpa
Vous devez vous connecter pour publier un commentaire.
Ici, vous allez, personnalisé Gson constructeur qui gère pratiquement chaque modèle de date
à l'aide de JodaTime (peut exclure si vous ne voulez pas l'utiliser, c'est juste d'élargir les possibilités)
Avec le code dans la question d'origine, à l'aide Gson 1.7.1 ou Gson 2.0, tout ce que j'obtiens est "l'Exception" in thread "main" com.google.gson.JsonParseException: La date doit être une chaîne de valeur". C'est ce que j'attends le code écrit pour faire.
Je devine que vous pouvez enregistrer un type de carte pour
java.util.Date
et pas pourDummyObject
. (Ce qui conduit à une autre erreur, mais je pense que c'est plus proche de ce que vous essayez d'atteindre. Bien sûr, je devine un peu au sujet de l'intention de la question/code.)Ou peut-être vous voulez changer la désérialisation logique le long des lignes suivantes, comprendre que vous ne voulez désérialiser la date de la partie au format JSON dans un
java.util.Date
.Vous aurez toujours besoin pour résoudre le (plus spécifique) date d'erreur d'analyse.