大佬教程收集整理的这篇文章主要介绍了使用JSONObject.fromObject toBean方法 属性类型为 data Timestamp 的处理,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对JSONObject.fromObject 的处理
1.扩展JsonValueProcessor接口(注意对null的处理)
import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; /*** * 将Bean中的timestamp转换为json中的日期字符串 * @author dxswzj@163.com * */ public class DateJsonValueProcessor implements JsonValueProcessor { public static final String Default_DATE_PATTERN ="yyyy-MM-dd"; private DateFormat dateFormat ; public DateJsonValueProcessor(String datePattern){ try{ dateFormat = new SimpleDateFormat(datePattern);} catch(Exception e ){ dateFormat = new SimpleDateFormat(Default_DATE_PATTERN); } } public Object processArrayValue(Object value,JsonConfig jsonConfig) { if(null!=value){ return process(value); }else{ return ""; } } public Object processObjectValue(String key,Object value,JsonConfig jsonConfig) { if(null!=value){ return process(value); }else{ return ""; } } private Object process(Object value){ return dateFormat.format((DatE)value); } }
Question question = questionservice.SELEctQuestionById(id);
JsonConfig config=new JsonConfig(); config.registerJsonValueProcessor(timestamp.class,new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss")); config.registerJsonValueProcessor(java.util.Date.class,new DateJsonValueProcessor("yyyy-MM-dd")); JSONObject json = JSONObject.fromObject(question,config);
class timestampMorpher extends AbstractObjectMorpher{ private Logger LOG = Logger.getLogger(timestampMorpher.class); private String[] formats = new String[]{"yyyy-MM-dd hh:mm:ss","yyyy-MM-dd"}; public void setFormats(String[] formats) { this.formats = formats; } public timestampMorpher() { // TODO Auto-generated constructor stub } public timestampMorpher(String[] formats) { this.formats = formats; } @Override public Object morph(Object dateStr) { // TODO Auto-generated method stub if(null == dateStr){ return null; } if(timestamp.class.isAssignableFrom(dateStr.getClass())){ return (timestamp)dateStr; } if(!supports(dateStr.getClass())){ throw new MorphException(dateStr.getClass()+"不是支持的类型!"); } String strValue = (String)dateStr; SimpleDateFormat dateParser = null; for(int i=0,k=formats.length;i<k;i++){ if(null == dateParser){ dateParser = new SimpleDateFormat(formats[i]); }else{ dateParser.applyPattern(formats[i]); } try{ return new timestamp(dateParser.parse(strValue.toLowerCase()).getTime())); }catch(ParseException E){ e.printStackTrace(); } } return new java.sql.timestamp(System.currentTimeMillis());//返回默认日期 } @Override public Class morphsTo() { // TODO Auto-generated method stub return timestamp.class; } public Boolean supports(Calss claszz){ return String.class.isAssignableFrom(claszz); } }在toBean的地方
JSONUtils.getMorpherRegistry().registerMorpher(new timestampMorpher()); Question question = (Question)JSONObject.toBean(questionJson,Question.class);
以上是大佬教程为你收集整理的使用JSONObject.fromObject toBean方法 属性类型为 data Timestamp 的处理全部内容,希望文章能够帮你解决使用JSONObject.fromObject toBean方法 属性类型为 data Timestamp 的处理所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。