JSONObject的內容為:
{"userId":"A000004FFDCE14","userName":"好好干g","userMp":"1820257596","clientName":"風格","regDate":"2016-07-05 00:00:00","startDate":"2016-07-05 00:00:00","endDate":"2017-09-05 00:00:00","times":15458,"master":"master","yesorno":3}]
List<PreparedInfo> listpre = PreApplyConvertEntity.secectlistinfo(); Gson gson = new GsonBuilder().registerTypeHierarchyAdapter(Date.class, new DateTypeAdapter()) .setDateFormat("yyyy-MM-dd HH:mm:ss").create(); String json = gson.toJson(listpre); System.out.println(json); JSONArray ja = JSONArray.fromObject(json); for (int i = 0; i < ja.size(); i++) { JSONObject jo = ja.getJSONObject(i); String[] dateFormats = new String[] {"yyyy-MM-dd HH:mm:ss" }; JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats)); PreparedInfo person = (PreparedInfo) JSONObject.toBean(jo, PreparedInfo.class); System.out.println(person);

1 DateTypeAdapter類: 2 public class DateTypeAdapter implements JsonSerializer<Date> ,JsonDeserializer<Date> { 3 private final SimpleDateFormat dateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 4 @Override 5 public Date deserialize(JsonElement json, Type date, JsonDeserializationContext context) throws JsonParseException { 6 // TODO Auto-generated method stub 7 if (!(json instanceof JsonPrimitive)) { 8 throw new JsonParseException("The date should be a string value"); 9 } 10 11 try { 12 return dateFormate.parse(json.getAsString()); 13 14 15 } catch (ParseException e) { 16 throw new JsonParseException(e); 17 } 18 19 20 21 } 22 23 @Override 24 public JsonElement serialize(Date src, Type arg1, JsonSerializationContext arg2) { 25 String dateFormatAsString = dateFormate.format(new Date(src.getTime())); 26 return new JsonPrimitive(dateFormatAsString); 27 28 } 29 30 }
其中 :List<PreparedInfo> listpre = PreApplyConvertEntity.secectlistinfo(); Gson gson = new GsonBuilder().registerTypeHierarchyAdapter(Date.class, new DateTypeAdapter()).setDateFormat("yyyy-MM-dd HH:mm:ss").create(); String json = gson.toJson(listpre); 將List集合對象轉換成jsonstring 對象!
還有:String[] dateFormats = new String[] {"yyyy-MM-dd HH:mm:ss" }; JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats)); PreparedInfo person = (PreparedInfo) JSONObject.toBean(jo, PreparedInfo.class); 解決不要這段代碼時轉換並不拋出例外,而是在日志中打出以下警告信息: Can't transform property 'birthday' from java.lang.String into java.util.Date. Will register a default Morpher 的解決辦法
最后 有時我們想將日期保存到數據庫時用 java.util.Date 就會出錯,一定要用java.sql.Date 這是在使用 JDBC 的情況下,在這種情況下就要將 java.util.Date 轉換為 java.sql.Date,下面就是示例代碼 java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());