您的位置:首页 > Web前端 > JavaScript

json中时间转换

2015-12-03 16:56 603 查看
对象中包含Date类型转换为json类型的对象时会出现如下问题:转化后发现json字符串为:
{"date":3,"day":4,"hours":16,"minutes":57,"month":11,"seconds":26,"time":1449133046380,"timezoneOffset":-480,"year":115}


和想要的不太一样。

可以使用jsonconfig来改变输出结果:

使用方法:

JsonConfig cfg = new JsonConfig();
		cfg.registerJsonValueProcessor(class, new DateJsonValueProcessor());
		JSONObject json = JSONObject.fromObject(object, cfg);
class为对应的你想要规范的对象类的class,object为你你要规范的对象。

DateJsonValueProcessor:
<pre name="code" class="html">public class JsonDateValueProcessor implements JsonValueProcessor {   
  
    private String format ="yyyy-MM-dd";   
       
    public Object processArrayValue(Object value, JsonConfig config) {   
        return process(value);   
    }   
  
    public Object processObjectValue(String key, Object value, JsonConfig config) {   
        return process(value);   
    }   
       
    private Object process(Object value){   
           
        if(value instanceof Date){   
            SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.UK);   
            return sdf.format(value);   
        }   
        return value == null ? "" : value.toString();   
    }   
}




processObjectValue和processArrayValue方法为转换对应对象为想要的结果

使用时注意下:我在测试时:
public class testDateJson {
	public static void main(String[] args) {
		Date date = new Date();
		System.out.println(date);
		JsonConfig cfg = new JsonConfig();
		cfg.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor());
		JSONObject json = JSONObject.fromObject(date, cfg);
	    System.out.println("json配置:"+json.toString());
	}
}


结果返回的结果完全没变,这个date类型必须在对象里不然没啥用。这个是processor是在匹配对象中的属性时调用的,但是date类型对象中属性没有date类型,因此还是原来结果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: