Jackson format de date avec @JsonFormat?

Je veux sérialiser certaines Calendrier des champs d'un POJO avec un format spécifique.

sans annotations, les champs comme ceci:

private Calendar timestamp1;
private Calendar timestamp2;

produire JSON comme ceci:

{ ..., timestamp1: 1402402106000, timestamp2: 1402488595000, ... }

Je voudrais ajouter un champ formaté comme une chaîne de caractères qu'il représente en fait une Journée de 24 heures de l'unité, pas un instant spécifique de temps. Mais quand j'ajoute un nouveau champ avec une annotation:

@JsonFormat(pattern = "yyyy-MM-dd")
private Calendar oneDay;

J'espérais obtenir JSON comme ceci:

{ ..., timestamp1: 1402402106000, timestamp2: 1402488595000, oneDay: "2014-06-12", ... }

Au lieu de cela, j'ai obtenu à l'exception suivante:

com.fasterxml.jackson.databind.JsonMappingException: 
    Cannot format given Object as a Date 
    (through reference chain: java.util.HashMap["data"]->java.util.ArrayList[0]-myPojo["oneDay"])

Ce que je fais mal?

Je suis en utilisant Jackson 2.2.0

  • Afficher la ligne où vous voulez enregistrer la "un jour" dans Date.
  • Tous les champs sont lues dans une base de données
  • Soutien pour @JsonFormat avec des dates a été ajouté à une date ultérieure (2.3.3 je crois); de sorte que vous pouvez essayer de Jackson 2.4.0.
  • J'ai eu le même problème et pourrait résoudre ce problème avec la mise à jour vers 2.4.2
InformationsquelleAutor ligboo | 2014-06-10