Wpis z mikrobloga

Koledzy z #java , pomozcie...
Pewnie dla zawodowców problem banalny, ale ja sie wciaz ucze i nie wiem jak to zrobic...
Mam problem z deserializacja datoczasu ( ͡° ͜ʖ ͡°)
Format jaki dostaje z frontu: "2017-07-04T06:00:00.000+01:00"

W kodzie mam:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
private LocalDateTime time;

Wywala ciagle: Text '2017-07-04T06:00:00.000+01:00' could not be parsed at index 23; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException:

Probowalem z OffsetDateTime i to samo.

Ktos wie jak ogarnac to nieposkromione bydle pt Jackson?
  • 12
@trustME: ok siadłem z ide i mam co potrzebujesz wywal tą adnotacje i zmień typ na java.util.Date

u mnie coś takiego działa:

HelloWorld.java

...

ObjectMapper mapper = new ObjectMapper();
String json = "{ \"time\": \"2017-07-04T06:00:00.000+01:00\"}";
Test test=null;
try {
test = mapper.readValue(json, Test.class);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(" " + test);
...

Test.java

import java.util.Date;

public class Test {

private Date time;

public Test(Date time) {
this.time =
@Ewentualnie: jak bardzo nie fajne rozwiązanie, Date powinno zostać oznaczone na czerwono aby każdy programista javy czuł się źle zawsze kiedy z niego korzysta (no chyba że naprawdę ma dobry powód).
@Ewentualnie: jest to jedna z pomyłek jaką kiedyś zrobili twórcy javy ale poprawili się i dali w zamian świętego grala jakim jest paczka czasu. Mógłbym wymianiać przynajmniej sto powodów dlaczego Date jest gorsze od DateTime ale mi wystarczy to że Date jest mutowalne.
@shus: @Ewentualnie: @mk321: znalazlem, ze deserializuje sie poprawnie przy zmianie na ZonedDateTime.
Chce jednak zachowac LocalDateTime jako typ.
Robie w Springu.
Da sie to jakos skonfigurowac przy uzyciu @JsonDeserialize zeby skonwerowac to przez ZonedDateTime do LocalDateTime czy trzeba napisac deserializer?
Jesli napisac, to da sie jakos uzyc standardowego deserializera i potem tylko .toLocalDateTime zeby nie powielac tego co juz jest napisane w jacksonie ?
@trustME: niestety nie używałem nigdy syna Jacka więc ja raczej nie pomogę, prawie napewno da radę to jakoś prosto zrobić. Wpierw spróbuj adnotacje aby miała czas ZULU.