Для этого может потребоваться использовать LocalDateSerializer
и LocalDateDeserializer
.
Класс ToDo.
public class ToDo {
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate dueDate;
// getters and setters
}
LocalDateDeserializer.java
import java.time.LocalDate;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
public class LocalDateDeserializer extends StdDeserializer<LocalDate> {
private static final long serialVersionUID = 1L;
protected LocalDateDeserializer() {
super( LocalDate.class );
}
@Override
public LocalDate deserialize( JsonParser jp, DeserializationContext ctxt ) {
try {
return LocalDate.parse( jp.readValueAs( String.class ) );
}
catch (Exception e) {
// TODO: handle exception
return null;
}
}
}
LocalDateSerializer.Java
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
public class LocalDateSerializer extends StdSerializer<LocalDate>
{
private static final long serialVersionUID = 1L;
public LocalDateSerializer()
{
super( LocalDate.class );
}
@Override
public void serialize( LocalDate value, JsonGenerator gen, SerializerProvider sp )
throws IOException, JsonProcessingException
{
gen.writeString( value.format( DateTimeFormatter.ISO_LOCAL_DATE ) );
}
}
А также вы должны передать дату в виде строки Пример: "2019-02-01".Передача объекта Date из внешнего интерфейса не является хорошей практикой.
import { Component,Input } from '@angular/core';
import {TodoService} from './todo.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'ToDoApp';
constructor(private todoService: TodoService) {
}
@Input() toDoData = {name: '', dueDate: Date};
addToDo() {
this.toDoData.dueDate = // formatted date
this.todoService.addToDo(this.toDoData).subscribe((result) => {
this.todoService.addToDo(this.toDoData);
console.log(this.toDoData.dueDate);
});
}
convertToMilliseconds(dueDate: DateConstructor) {
return dueDate.valueOf();
}
}