問題描寫敘述:
oracle 10G中用戶表有一個字段是日期型。數據格式為yyyy-MM-dd HH:mm:ss,前端顯示時僅僅能顯示成yyyy-MM-dd 后面的 HH:mm:ss不顯示。
經過一番痛苦的原因分析。發現應該將用戶實體的日期類型由java.sql.Date改動成java.util.Date型,而且對 jackson進行例如以下處理:
private void Test(MyUser user)
{
ObjectMapper mapper = new ObjectMapper();
Writer strWriter = new StringWriter();
try {
// mapper.writeValue(strWriter, user);
System.out.println("時間");
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d;
try {
d = (Date) df.parse("2011-10-12 12:12:12");
user.setCreatedatetime(d);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(user.getCreatedatetime());
// DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SerializationConfig serConfig = mapper.getSerializationConfig();
serConfig.setDateFormat(dateFormat);
DeserializationConfig deserializationConfig = mapper.getDeserializationConfig();
deserializationConfig.setDateFormat(dateFormat);
mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.writeValue(strWriter, user);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String userDataJSON = strWriter.toString();
System.out.println(userDataJSON);
}
輸出為:
時間
Wed Oct 12 12:12:12 CST 2011,默認實體類日期輸出格式
{"id":262,"username":"zhaohaiyan","password":"2","createdatetime":"2011-10-12 12:12:12","modifydatetime":"2014-05-15 09:17:05"},經過格式化后顯示。