JSONObject處理java.util.Date


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 }
View Code

 

其中 :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());


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM