【问题标题】:Is it possible to set the default date format in JSON-B (Yasson) globally, instead of adding an annotation on every property?是否可以全局设置 JSON-B (Yasson) 中的默认日期格式,而不是在每个属性上添加注释?
【发布时间】:2019-11-30 15:09:44
【问题描述】:

到目前为止,我一直在使用 Jersey,并且正在使用 JSON-B 进行我的第一个实现。

我正在使用 Payara,因此我与 Jersey 和 Yasson 合作。我遇到了一个问题,因为序列化的日期总是包含“[UTC]”后缀。

我设法在我的 DTO 中对我的日期属性使用了注释。但我想全局配置(在 JAX-RS 应用程序配置中?),而不是在每个日期属性上重复自己。那可能吗?到目前为止我还没有找到任何东西......

附带问题:我认为可以去掉这个“[UTC]”后缀,因为它会破坏所有试图解析日期的客户端。有什么想法吗?

【问题讨论】:

    标签: jersey jax-rs payara jsonb-api yasson


    【解决方案1】:

    感谢Github issue,我能够解决我的问题。这是我最终在代码中编写的内容:

    JSONConfigurator.java:
    
    import javax.json.bind.Jsonb;
    import javax.json.bind.JsonbBuilder;
    import javax.json.bind.JsonbConfig;
    import javax.json.bind.config.PropertyNamingStrategy;
    import javax.ws.rs.ext.ContextResolver;
    import javax.ws.rs.ext.Provider;
    
    @Provider
    public class JSONConfigurator implements ContextResolver<Jsonb> {
    
      @Override
      public Jsonb getContext(Class<?> type) {
        JsonbConfig config = getJsonbConfig();
        return JsonbBuilder
          .newBuilder()
          .withConfig(config)
          .build();
      }
    
      private JsonbConfig getJsonbConfig() {
        return new JsonbConfig()
          .withDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", null);
      }
    }
    

    还有:

    import javax.ws.rs.ApplicationPath;
    import javax.ws.rs.core.Application;
    import java.util.HashSet;
    import java.util.Set;
    
    @ApplicationPath("/api")    
    public class ApplicationConfig extends Application {
    
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> resources = new HashSet<Class<?>>();
            addRestResourceClasses(resources);
            resources.add(JSONConfigurator.class);
            return resources;
        }
    
    
        private void addRestResourceClasses(Set<Class<?>> resources) {
          ...
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      相关资源
      最近更新 更多