CXF中的自定义JSON日期处理

时间:2013-01-11 00:43:00

标签: java json cxf jax-rs jettison

我正在使用apache CXF创建一个消耗multipart / form-data的JAX-RS服务,其中一个部分是application/json,我正在Java bean中处理它。我遇到的问题是标准的jettison反序列化器无法识别传入的日期格式,我只得到null

服务是:

@POST
@Path("/blah/")
@Consumes("multipart/form-data")
public String doBlah(MultipartBody body)
{
        JSON json = atts.get(0).getObject(JSON.class);
}

JSON对象是:

class JSON {
    Date date;
}

传入的日期类似于:November 25, 2012 13:35:24我知道如何使用SimpleDateFormat进行转换,因此我可以将JSON更改为字符串并获取值,然后可以手动执行转换...但是你如何在CXF中注册一个类来进行抛弃转换?

beans.xml中是否有配置或我可以添加自定义处理程序和/或覆盖默认Date处理的内容?

1 个答案:

答案 0 :(得分:0)

您可以在Spring中注册自定义日期处理程序,如下所示:

<jaxrs:server …>
    <jaxrs:providers>
        <bean class='….DateHandler' />
    </jaxrs:providers>
</jaxrs:server>

日期处理程序类本身非常简单:

public class DateHandler implements ParameterHandler<Date> {
    @Override
    public Date fromString(String s) {
        Date ret = // do your magic
        return ret;
    }
}