【问题标题】:Custom JSON Date handling in CXFCXF 中的自定义 JSON 日期处理
【发布时间】:2013-01-11 00:43:00
【问题描述】:

我正在使用 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 中注册一个类以在 jettison 中进行转换?

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

【问题讨论】:

标签: java json cxf jax-rs jettison


【解决方案1】:

您可以在 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;
    }
}

【讨论】:

  • 这似乎不适用于反序列化 json?应该是(我可能有一些配置问题?)
  • 它对我有用,虽然我应该注意我使用的是 Jackson JSON 处理器 (&lt;bean class='org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider' /&gt;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多