首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以在全局上设置JSON (Yasson)中的默认日期格式,而不是在每个属性上添加一个注释?

是否可以在全局上设置JSON (Yasson)中的默认日期格式,而不是在每个属性上添加一个注释?
EN

Stack Overflow用户
提问于 2019-11-30 15:09:44
回答 1查看 1.2K关注 0票数 1

到目前为止,我已经使用了泽西岛,我正在用JSON完成我的第一个实现。

我在使用Payara,所以我和泽西和亚森一起工作。我有一个问题,因为序列化日期总是包含"UTC“后缀。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-01 13:54:06

多亏了这个Github问题,我才能解决我的问题。下面是我最后在代码中所写的内容:

代码语言:javascript
复制
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);
  }
}

和:

代码语言:javascript
复制
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) {
      ...
    }

}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59117416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档