Les meilleures pratiques pour Sérialiser java.temps.LocalDateTime (java 8) js Date à l'aide de GSON
Dans notre récent projet, nous utilisons java 8. J'ai besoin de sérialiser java.temps.LocalDateTime à java script format de Date.
Actuellement ce que j'ai fait a été de définir une coutume sérialiseur pour convertir LocalDateTime d'horodatage.
public class LocalDateTimeSerializer implements JsonSerializer<LocalDateTime> {
@Override
public JsonElement serialize(LocalDateTime localDateTime, Type type, JsonSerializationContext jsonSerializationContext) {
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
return new JsonPrimitive(date.getTime());
}
}
puis créer Gson objet à l'aide de GsonBuilder avec mon custom LocalDateTimeSerializer
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer());
Gson gson = gsonBuilder.create();
Puis en Java Script que j'ai créer un objet Date en utilisant cette heure. Ça fonctionne très bien.
J'ai besoin de savoir, là, c'est ok ou est-il une meilleure façon de le faire?
OriginalL'auteur pasanbuddhika | 2014-02-24
Vous devez vous connecter pour publier un commentaire.
OUI, c'est le meilleur moyen.
Il est fortement recommandé de convertir un
Time
objet enlong
type de représentation lorsque vous allez pour les transférer d'un système à l'autre. Cela permet d'éviter de nombreux problèmes, tels que la mise en forme des données et de l'heure locale dans les différents systèmes.Et en plus,
long
représentation ne prend que 8 octets, alors que la représentation de chaîne prend un peu plus. Ce qui signifielong
représentation est plus efficace de transférer et de les analyser.OriginalL'auteur Weibo Li
Java 8 solution de LocalDateTime à l'Époque Millisecondes ou Secondes:
Dans votre cas, cependant, je vois un bug qui utilise le Fuseau horaire Local au lieu de l'UTC. Ma solution recommandée serait:
localDateTime.toInstant(ZonedDateTime.now().getOffset()).toEpochMilli()
J'ai créé une classe de test dans kotlin qui montre des choses qui a été discuté ici: [ZonedDateTimeWithEpochTest.kt]gist.github.com/RichardSilveira/...
OriginalL'auteur vladaman