Actualmente estoy trabajando en un proyecto que guarda regularmente varios objetos Java en una base de datos MongoDB. Este objeto contiene una Date .
La conversión de Java Date a Json Mongo da esto:
new Date() -> "Jan 27, 2022, 2:47:24 AM"Pero este formato no se ajusta a MongoDB Date. MongoDB se considera una cadena en lugar de una fecha.
public record DatedPuzzle(Date date, Puzzle puzzle) { } List<InsertOneModel<Document>> bulkWrites = puzzles.parallelStream() .map(puzzle -> new InsertOneModel<>(Document.parse(gson.toJson(puzzle)))) .toList();¿Cómo crear un objeto conforme a la serialización de Gson?
Por ejemplo:
new Date() -convert with Gson-> "2022-01-27T01:47:24.000+00:00"Podría crear un objeto Gson no directamente sino usando GsonBuilder y con alguna configuración, logrará el resultado deseado.
Código:
public static void main(String[] args) { Date date = new Date(); System.out.println(date); Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSXXX") .create(); System.out.println(gson.toJson(date)); }Producción:
Thu Feb 03 23:18:18 EET 2022 "2022-02-03T11:18:18.650+02:00"ACTUALIZAR:
El descargo de responsabilidad del patrón es el siguiente:
y Año (por ejemplo, 12 o 2012 )M Mes en un añod día en un mesh Hora del día, 1-12m Minuto en una hora, 0-59s Segundo en un minuto, 0-59S Milisegundo en segundo, 0-999' Escape para delimitador de textoX - Zona horaria ISO 8601 ( -08 ; -0800 ; -08:00 ) z : zona horaria general (hora estándar del Pacífico; PST; GMT-08:00)
Z - RFC 822 zona horaria ( -0800 )
Se agregaron algunos códigos adicionales para una mejor comprensión de la salida en Github.
Puede verificar la configuración regional que se usa allí simplemente:
System.out.println(Locale.getDefault());En mi maquina es:
en_US