2017-01-19 49 views
5

Ben aşağıdaki kod parçası var:Jackson ile LocalDateTime nasıl serileştirilir?

ObjectMapper mapper = new ObjectMapper(); 
    mapper.registerModule(new JavaTimeModule()); 
    mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); 
    String now = new ObjectMapper().writeValueAsString(new SomeClass(LocalDateTime.now())); 
    System.out.println(now); 

Ve bu olsun:

{ "zaman": { "saat": 20, "dakika": 49, "ikinci": 42, "nano": 99000000, "dayofyear": 19, "haftanınGünü": "Perşembe", "ay": "Ocak", "dayOfMonth": 19, "yıl": 2017 "monthValue": 1, "kronoloji ": {" id ":" ISO", "calendarType": "" ISO8601}}}

ne elde etmek istiyorum ISO8601

bir dizedir

2017-01-19T18: 36: 51Z

+0

Bu gibi bir şey ister misiniz: DateFormat df = new SimpleDateFormat ("MM/gg/yy ss: a mm"); ve sonra: mapper.setDateFormat (df); – dave823

cevap

7

Bu muhtemelen kodunuzda hata kaynaklanmaktadır.

ObjectMapper mapper = new ObjectMapper(); 
mapper.registerModule(new JavaTimeModule()); 
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); 
String now = mapper.writeValueAsString(new SomeClass(LocalDateTime.now())); 
System.out.println(now); 
+0

OMG, ne kadar kör bir moronum. '' Yeni ObjectMapper() '' utanıyor bana. – user1745356

2

Bu OffsetDateTime için yapabilecekleriniz: Sen eşleştiricisindeki yeni yapılandırılmamış örneğini kullanıyorlardı, burada düzeltmedir olduğundan

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "uuuu-MM-dd'T'HH:mm:ss.SSSXXXX") 
private OffsetDateTime timeOfBirth; 

LocalDateTime için, XXXX (bölge ofset) kullanamazsınız Ofset bilgisi yok. Yani bırakabilirsin. ISO8601 discourages using Local Time Belirsiz Ama: hayır UTC ilişkisi bilgileri bir zaman gösterimi ile verilir

ise zaman yerel saatte olduğu varsayılır. Aynı saat diliminde iletişim kurarken yerel saatin olduğunu varsaymakla birlikte, farklı saat dilimlerinde iletişimde kullanıldığında, belirsizdir. Tek bir coğrafi saat diliminde bile , bölge gün ışığından yararlanma saati gözlemliyorsa bazı yerel saatler belirsiz olacaktır. standardının gösterimini kullanarak bir saat dilimini (bölge belirteci) belirtmek için genellikle tercih edilir.