2 回答

TA貢獻1835條經驗 獲得超7個贊
我記得舊版本的spring沒有這個問題(或者我很幸運)但這就是我在Spring boot 2.1.7.RELEASE中解決它的方法:
首先,添加Jackson 的支持模塊以支持 Java 8 功能(TimeDate API)
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-parameter-names</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jdk8</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
然后在 Spring 中注冊一個帶有自定義配置(以支持 Java 8)的默認 ObjectMapper bean。
@Bean
@Primary
public ObjectMapper geObjMapper(){
return new ObjectMapper()
.registerModule(new ParameterNamesModule())
.registerModule(new Jdk8Module())
.registerModule(new JavaTimeModule());
}
注意:@Primary 用作預防措施,因此如果類路徑上有其他 ObjectsMapper bean,spring 將默認選擇這個。

TA貢獻1831條經驗 獲得超4個贊
您編寫的解決方案是正確的方法。其他方法如下所述。公共類 LocalDateTimeSerializer 實現 JsonSerializer { @Override public JsonElement serialize(LocalDateTime localDateTime, Type type, JsonSerializationContext jsonSerializationContext) { Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant(); 日期日期 = Date.from(instant); 返回新的 JsonPrimitive(date.getTime()); } }
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(LocalDateTime.class, new LocalDateTimeSerializer());
Gson gson = gsonBuilder.create();
另一種方法。無論如何試試這個。嘗試將日期時間格式更改為字符串?!?011-04-08T09:00:00”。nano 和其他格式非常復雜,我無法從你 lastseen json 中看出你到底在說什么日期時間。它也錯過了時區,因此您的本地時間可以在您部署解決方案的任何地方,如果您在 3 個不同的時區機器上部署本地時間是不正確的。使用此字符串格式或制作您自己的“2011-04-08T09:00:00”
public class CustomJsonDateDeserializer extends JsonDeserializer<Date>
{
@Override
public Date deserialize(JsonParser jsonParser,
DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String date = jsonParser.getText();
try {
return format.parse(date);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
@JsonDeserialize(using = CustomJsonDateDeserializer.class)
添加回答
舉報