【问题标题】:How do I configure the date formatter through Genson/Jersey?如何通过 Genson/Jersey 配置日期格式化程序?
【发布时间】:2012-11-28 23:07:06
【问题描述】:

我将 Jersey 用于我的 RESTful 服务并使用 Genson 来执行我的 JSON/POJO 转换。 Genson 没有设置,我只是将它放到类路径中,它就可以工作,除了它在日期解析时抛出错误,因为格式是意外的。

现在,如果我要使用 Gson 作为 servlet 执行此操作,我会在我维护的 Gson 实例上设置日期格式。这会强制 POJO 的解析使用正确的格式。我看到 Genson 有一个类似的接口,但我不知道如何从 Jersey servlet 服务或 Spring 上下文中获取实例,以便我设置格式。

所以,简短的问题是:我如何为 Genson 设置从 Jersey 开始的日期格式?

【问题讨论】:

    标签: json jersey date-formatting genson


    【解决方案1】:

    要配置 Genson 实例,您可以使用 Genson.Builder 类(在这一点上类似于 Gson)。然后你必须用 Jersey 注入它。

    @Component
    @Provider
    public class GensonProvider implements ContextResolver<Genson> {
       private final Genson genson = new Genson.Builder().setDateFormat(yourDateFormat).create();
    
        @Override
       public Genson getContext(Class<?> type) {
         return genson;
       }
    }
    

    您可能还想看看 Genson 如何集成到 Jersey here

    【讨论】:

    • 你能知道 Jersey 不使用我的 Genson ContextResolver 的原因吗?我使用 ResourceConfig 类手动注册了它,但从未调用过解析器。 :(
    • 可能有很多原因。您应该打开一个新问题以显示一些代码并在此处发布指向它的链接。
    • 所需格式的日期转换工作正常,并将其设置为 UTC 时区。但在我的 Request 对象中,它不在 UTC 时区。它在我的服务器时区。
    • 我遇到了和 Orri 一样的问题。我的ContextResolver 未被识别。我必须把它放在与web.xml 中为com.sun.jersey.config.property.packages 指定的相同的包中(我也把我的服务放在了那里)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2016-02-24
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多