Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用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);
    }
}

2.转化时 JSONObject.fromObject 加上参数

  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);

这样json里得到的日期格式就是按我们定义的格式显示


对toBean()的处理

json日期格式可以是 2018-02-01 12:23:12 或 2014-08-08
1.编写@L_215_13@morpher类继承自AbstractObjectMorpher
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);

便提下 如果Question有分录的话需要这样转
@H_418_1@map<Stirng,Class> classmap = new HashMap<Stirng,Class>(); classmap.put("questionEntry",QuestionEntry.class); question = (Question)JSONObject.toBean(questionJson,Question.class,calssmap);
其中Question 有属性
private List<QuestionEntry> questionEntry;

大佬总结

以上是大佬教程为你收集整理的使用JSONObject.fromObject toBean方法 属性类型为 data Timestamp 的处理全部内容,希望文章能够帮你解决使用JSONObject.fromObject toBean方法 属性类型为 data Timestamp 的处理所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。