Jersey 是否可以全局设置JSON-B(Yasson)中的默认日期格式,而不是在每个属性上添加注释?
到目前为止,我一直在使用Jersey,我正在使用JSON-B进行我的第一次实现 我用的是Payara,所以我用的是Jersey和Yasson。我遇到了一个问题,因为序列化日期总是包含[UTC]后缀 我已设法在我的DTO中的日期属性上使用注释。但我想在JAX-RS应用程序配置中全局配置它,而不是在每个日期属性上重复我自己。可能吗?到目前为止我还没有找到任何东西 附带问题:我假设可以去掉这个[UTC]后缀,因为它会打断所有试图解析日期的客户端。有什么想法吗?多亏了这个,我才能够解决我的问题。以下是我最后在代码中编写的内容:Jersey 是否可以全局设置JSON-B(Yasson)中的默认日期格式,而不是在每个属性上添加注释?,jersey,jax-rs,payara,jsonb-api,yasson,Jersey,Jax Rs,Payara,Jsonb Api,Yasson,到目前为止,我一直在使用Jersey,我正在使用JSON-B进行我的第一次实现 我用的是Payara,所以我用的是Jersey和Yasson。我遇到了一个问题,因为序列化日期总是包含[UTC]后缀 我已设法在我的DTO中的日期属性上使用注释。但我想在JAX-RS应用程序配置中全局配置它,而不是在每个日期属性上重复我自己。可能吗?到目前为止我还没有找到任何东西 附带问题:我假设可以去掉这个[UTC]后缀,因为它会打断所有试图解析日期的客户端。有什么想法吗?多亏了这个,我才能够解决我的问题。以下是我
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);
}
}
以及:
多亏了这一点,我才得以解决我的问题。以下是我最后在代码中编写的内容:
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);
}
}
以及: