'da bir ZonedDateTime'ı hatalı bir şekilde serileştirdi. Basit bir kontrolör bir Java 8 ZonedDateTime
sahip bir nesne dönen vardır:Jackson, Spring Boot
RestController
yılında
public class Device {
// ...
private ZonedDateTime lastUpdated;
public Device(String id, ZonedDateTime lastUpdated, int course, double latitude, double longitude) {
// ...
this.lastUpdated = lastUpdated;
// ...
}
public ZonedDateTime getLastUpdated() {
return lastUpdated;
}
}
ben sadece var:
@RequestMapping("/devices/")
public @ResponseBody List<Device> index() {
List<Device> devices = new ArrayList<>();
devices.add(new Device("321421521", ZonedDateTime.now(), 0, 39.89011333, 24.438176666));
return devices;
}
Ben ISO formatına göre biçimlendirilmiş olması ZonedDateTime
bekliyordum, ama onun yerine ben böyle sınıfın bütün bir JSON dökümü alıyorum:
"lastUpdated":{"offset":{"totalSeconds":7200,"id":"+02:00","rules":{"fixedOffset":true,"transitionRules":[],"transitions":[]}},"zone":{"id":"Europe/Berlin","rules":{"fixedOffset":false,"transitionRules":[{"month":"MARCH","timeDefinition":"UTC","standardOffset":{"totalSeconds":3600,"id":"+01:00","rules":{"fixedOffset":true,"transitionRules":[],"transitions":[]}},"offsetBefore":{"totalSeconds":3600,"id":"+01:00","rules":{"fixedOffset":true,"transitionRules":[],"transitions":[]}},"offsetAfter":{"totalSeconds":7200,"id":"+02:00", ...
sadece spring-boot-starter-web
uygulama var spring-boot-starter-jetty
kullanarak ve spring-boot-starter-tomcat
hariç.
Jackson neden Spring Boot'da böyle davranıyor?
** GÜNCELLEME soruyu soran sonra bunu buldum bu çözmek için nasıl adım kılavuz tam bir adım arayanlar için **
: http://lewandowski.io/2016/02/formatting-java-time-with-spring-boot-using-json/
teşekkür ederiz. Bu yüzden, 'jackson-datatype-jsr310' sürüm 2.8.1 bağımlılığını ekledim ve efekt, zaman damgasının iki kez "lastUpdated" olarak değiştirildi: 1471893818.177000000'. Spring Boot'da, kullandığım 'ObjectMapper''a doğrudan erişimim yok, herhangi bir fikri 'JavaTimeModule' 'ı kullanmayı nereden söyleyebilirim? (Ben Spring Boot için biraz yeniyim) – jbx
@jbx bu cevabı kontrol et - http://stackoverflow.com/questions/7854030/configuring-objectmapper-in-spring datetime dönüştürmek için 'WRITE_DATES_AS_TIMESTAMPS' özelliğini kapatmayı denemeniz gerekiyor ISO 8601 – vsminkov
Sadece cevabı bulduğumu söyleyecektim. Evet, sadece "spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false" ile çalışır, "ObjectMapper" öğesini programsal olarak özelleştirmeye gerek yoktur. Sorum, özellikle Spring boot ile ilgili olduğundan, cevabınızı, bunu doğru yanıt olarak seçmemi sağlayacak şekilde eklemek için düzenleyebilir misiniz? – jbx