com.google.gson.JsonSyntaxException lors de la tentative d'analyse de la date / heure dans json
Je suis en utilisant RestTemplete pour obtenir des données json à partir d'une api rest et je suis en utilisant Gson pour analyser des données de format json pour Objet
Gson gson = new Gson();
restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new GsonHttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
List<Appel> resultList = null;
resultList = Arrays.asList(restTemplate.getForObject(urlService, Appel[].class));
mais j'ai ce problème avec la Date, que dois-je faire ..
Could not read JSON: 1382828400000; nested exception is com.google.gson.JsonSyntaxException: 1382828400000
mon Pojo qui contient d'autres objets pojo dans son corps
public class Appel implements Serializable {
private Integer numOrdre;
private String reference;
private String objet;
private String organisme;
private Double budget;
private Double caution;
private Date dateParution;
private Date heureParution;
private Date dateLimite;
private Date heureLimite;
private List<Support> supportList;
private Ville villeid;
private Categorie categorieid;
public Appel() {
}
public Appel(Integer numOrdre, String reference, String objet, String organisme, Date dateParution, Date heureParution, Date dateLimite) {
this.numOrdre = numOrdre;
this.reference = reference;
this.objet = objet;
this.organisme = organisme;
this.dateParution = dateParution;
this.heureParution = heureParution;
this.dateLimite = dateLimite;
}
c'est sat json renvoyé par mon API
[
{
"numOrdre": 918272,
"reference": "some text",
"objet": "some text",
"organisme": "some text",
"budget": 3000000,
"caution": 3000000,
"dateParution": 1382828400000,
"heureParution": 59400000,
"dateLimite": 1389657600000,
"heureLimite": 34200000,
"supportList":
[
{
"id": 1,
"nom": "some text",
"dateSupport": 1384732800000,
"pgCol": "013/01"
},
{
"id": 2,
"nom": "some text",
"dateSupport": 1380236400000,
"pgCol": "011/01"
}
],
"villeid":
{
"id": 2,
"nom": "Ville",
"paysid":
{
"id": 1,
"nom": "Pays"
}
},
"categorieid":
{
"id": 1,
"description": "some text"
}
},
.....
]
source d'informationauteur Noureddine
Vous devez vous connecter pour publier un commentaire.
Personnalisé Sérialiseurs n'est plus nécessaire - il suffit d'utiliser GsonBuilder, et de spécifier le format de la date, en tant que tel:
Ce que j'ai fait, enfin, est d'aller à mon projet d'API et de créer un CustomSerializer
que le retour au format yyyy-MM-dd et j'ai annoté les champs de date avec
dans mon application Android, j'ai créé Gson objet comme
et ça fonctionne pour l'instant .. merci pour votre aide, je l'apprécie
La
1382828400000
valeur est une longue (temps en millisecondes). Vous ditesGSON
que le champ est unDate
et il ne peut pas convertir automatiquement unlong
dans unDate
.Vous devez préciser vos domaines aussi longtemps valeurs
et après
GSON
jette la chaîne JSON souhaitéAppel
instance de classe, de construire un autre objet avec les champs que les Dates et les convertir, tout en affectant les valeurs pour le nouvel objet.Une autre alternative est de mettre en œuvre vos propres Deserializer:
Vous devez définir cette coutume deserializer sur vos champs souhaités, sur les méthodes de définition, comme: