JSON转换为JAVA对象及日期格式转换处理

1.JSON日期格式转换

默认JSON对DATE类型会转换成一个多属性对象, 而不是单独的一个字符串, 在某些应用处理上不是很方便, 可以利用JsonValueProcessor来实现日期的转换.

默认格式:

"lastUpdate": {
"date": 29,
"day": 3,
"hours": 14,
"minutes": 46,
"month": 1,
"seconds": 41,
"time": 1330498001000,
"timezoneOffset": -480,
"year": 112
},

转换后格式:

"lastUpdate": "2012-02-29 14:46:41"

自定义一个日期处理器:

DateJsonValueProcessor是实现了一个JsonValueProcessor接口(两种方式)

[java] view plain copy
  1. importjava.text.SimpleDateFormat;
  2. importjava.util.Date;
  3. importnet.sf.json.JsonConfig;
  4. importnet.sf.json.processors.JsonValueProcessor;
  5. /**
  6. *JSON日期格式转换
  7. *
  8. */
  9. publicclassDateJsonValueProcessorimplementsJsonValueProcessor
  10. {
  11. privateStringformat="yyyy-MM-ddHH:mm:ss";
  12. publicDateJsonValueProcessor()
  13. {
  14. }
  15. publicDateJsonValueProcessor(Stringformat)
  16. {
  17. this.format=format;
  18. }
  19. publicObjectprocessArrayValue(Objectvalue,JsonConfigjsonConfig)
  20. {
  21. String[]obj={};
  22. if(valueinstanceofDate[])
  23. {
  24. SimpleDateFormatsf=newSimpleDateFormat(format);
  25. Date[]dates=(Date[])value;
  26. obj=newString[dates.length];
  27. for(inti=0;i<dates.length;i++)
  28. {
  29. obj[i]=sf.format(dates[i]);
  30. }
  31. }
  32. returnobj;
  33. }
  34. publicObjectprocessObjectValue(Stringkey,Objectvalue,JsonConfigjsonConfig)
  35. {
  36. if(valueinstanceofDate)
  37. {
  38. Stringstr=newSimpleDateFormat(format).format((Date)value);
  39. returnstr;
  40. }
  41. returnvalue;
  42. }
  43. publicStringgetFormat()
  44. {
  45. returnformat;
  46. }
  47. publicvoidsetFormat(Stringformat)
  48. {
  49. this.format=format;
  50. }
  51. }

或:

[java] view plain copy
  1. packageorg.ymm.util;
  2. importjava.text.SimpleDateFormat;
  3. importnet.sf.json.JsonConfig;
  4. importnet.sf.json.processors.JsonValueProcessor;
  5. publicclassDateJsonValueProcessorimplementsJsonValueProcessor
  6. {
  7. privateStringformat;
  8. publicDateJsonValueProcessor(Stringformat){
  9. this.format=format;
  10. }
  11. publicObjectprocessArrayValue(Objectvalue,JsonConfigjsonConfig)
  12. {
  13. returnnull;
  14. }
  15. publicObjectprocessObjectValue(Stringkey,Objectvalue,JsonConfigjsonConfig)
  16. {
  17. if(value==null)
  18. {
  19. return"";
  20. }
  21. if(valueinstanceofjava.sql.Timestamp)
  22. {
  23. Stringstr=newSimpleDateFormat(format).format((java.sql.Timestamp)value);
  24. returnstr;
  25. }
  26. if(valueinstanceofjava.util.Date)
  27. {
  28. Stringstr=newSimpleDateFormat(format).format((java.util.Date)value);
  29. returnstr;
  30. }
  31. returnvalue.toString();
  32. }
  33. }

转换调用代码:


	public String queryEmpAll() throws IOException{
		System.out.println("queryEmpAll!!!!!!!!!!!!!!!!!!!!!!!");	
//		PrintWriter out=ServletActionContext.getResponse().getWriter();
		
		JsonConfig jsonConfig = new JsonConfig();  
		jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor()); 
		jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonDateValueProcessor()); 
		
		Map map=new HashMap();
		map.put("total", 3);
		map.put("data", ies.getAll());
		
		JSONObject jn=JSONObject.fromObject(map,jsonConfig);
		
		System.out.println(jn.toString());
//		out.print(jn.toString());
		return null;
	}











你可能感兴趣的:(java)