关于json转换bean,Date为当前系统时间的问题

本文介绍了一种解决JSON中Date字段被错误转换为时间戳的问题的方法。通过自定义TimestampToDateMorpher类并注册到JSONUtils中,可以将时间戳正确转换为Date对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日,调用服务端webservice接口,返回json对象时,发现Date字段被转成时间戳格式。

客户端取到json数据,进行转换,该Date字段却是当前时间,百度了下,似乎是JSON(net.sf.json)不支持该格式的转换。

此时项目加上类,进行时间戳转换:

public class TimestampToDateMorpher extends AbstractObjectMorpher{
    public Object morph(Object value) {  
        if( value != null){  
            return new Date(Long.parseLong(String.valueOf(value)));  
        }     
        return null;  
    }  
  
    public Class morphsTo() {  
        return Date.class;  
    }  
      
    public boolean supports( Class clazz ){  
       return Long.class.isAssignableFrom( clazz );  
    }  
}
业务类里加上静态块:
static {
        JSONUtils.getMorpherRegistry().registerMorpher(new TimestampToDateMorpher());
    }
这时,下方的代码
JSONObject jobject = JSONObject.fromObject(Result);

JSONArray jarray = jobject.getJSONArray("list");
List list = JSONArray.toList(jarray, clazz.newInstance(), new JsonConfig());
转换得到的实体bean,Date字段已取到正常时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值