Cómo vincular el valor dateOfJoining (tipo de cadena) a la variable miembro "dateOfJoining" (tipo de fecha) en la clase "DateInput" después de enviar JSON a continuación a través del cartero. Cómo convertir un objeto String a Date en Java con el mismo formato dd/MM/yyyy. La fecha convertida debe estar en el objeto Fecha pero no en Cadena.
Json es como se indica a continuación
{ "dateOfJoining" : "03/04/2017" }Servicio URL golpeando en cartero -- localhost/Rest/hello
Clase RestService en java - HandleRestRequest.java
@RestController public class HandleRestRequest { @RequestMapping("\hello"); public List setRequestParams(@RequestBody DateInput dateInput) { ....... } } Pojo Class DateInput.java public class DateInput { private Date dateOfJoining; ....... }Si envío la fecha de json en el siguiente formato, es un error de lanzamiento como entrada no satisfecha
{ "dateOfJoining" : 04/04/2017 }Así que lo envié como formato de cadena y cambié dateOfJoining como cadena en el archivo DateInput.java y luego traté de convertirlo como objeto de fecha como se muestra a continuación.
Archivo DateInput.java modificado de fecha a cadena
public class DateInput { private String dateOfJoining; ....... }JSON modificado
{ "dateOfJoining" : "04/04/2017" }Código para convertir la entrada del usuario de Cadena a Fecha
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); String convertedDate = sdf.format(dateInput.getDateOfJoining());Se está convirtiendo al formato requerido, pero el tipo de devolución es Cadena, pero se espera que el objeto Fecha envíe la capa DAO. Así que probé sdf.parse, su objeto de fecha de retorno pero no en el formato requerido
Date date = sdf.parse(sdf.format(dateInput.getDateOfJoining())); output is like - Tue Apr 04 00:00:00 IST 2017 expected is 04/04/2017 (with return type Date object).Entonces, ayúdenme a convertir la cadena en un objeto de fecha con el formato requerido, ya que la capa DAO espera una entrada como objeto de fecha en formato dd/MM/yyyy
Editar: actualizando la respuesta de acuerdo con la pregunta actualizada.
Utilice la anotación @JsonFormat de Jackson Databind para especificar el patrón de fecha.
public class DateInput { @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd-MM-yyyy") private Date dateOfJoining; ....... }Con JSON-B (incluido en Java EE 8) puedes hacer esto:
class DateInput { @JsonbDateFormat("dd/MM/yyyy") public Date dateOfJoining; } En mis pruebas con Thorntail 2.4, no necesito ninguna anotación para el formato ISO cuando uso java.util.Date :
{ "dateOfJoining" : "2019-04-28T14:45:15" }cambie su código al fragmento de código a continuación
public List setRequestParams(@RequestParam("dateOfJoining")@DateTimeFormat(pattern="dd-MM-yyyy") DateInput dateInput) { ... }