json中时间转换

对象中包含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类型,因此还是原来结果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值