【发布时间】:2025-12-06 05:25:07
【问题描述】:
Glassfish4 正在使用 Moxy 将 REST 响应序列化为 JSON。有谁知道如何配置应用程序以使用 Jackson 而不是 Moxy?
【问题讨论】:
标签: glassfish jersey jackson moxy
Glassfish4 正在使用 Moxy 将 REST 响应序列化为 JSON。有谁知道如何配置应用程序以使用 Jackson 而不是 Moxy?
【问题讨论】:
标签: glassfish jersey jackson moxy
如果您想使用 Jackson 作为您的 JSON 提供程序,您需要在您的应用程序中注册 JacksonFeature(通过注册此功能您禁用 MOXy 作为您的 JSON 提供程序)。
您可以在Application 子类中执行此操作:
public class MyApplication extends Application {
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<Class<?>>();
// Add root resources.
classes.add(HelloWorldResource.class);
// Add JacksonFeature.
classes.add(JacksonFeature.class);
return classes;
}
}
或ResourceConfig:
final Application application = new ResourceConfig()
.packages("org.glassfish.jersey.examples.jackson")
.register(MyObjectMapperProvider.class) // No need to register this provider if no special configuration is required.
// Register JacksonFeature.
.register(JacksonFeature.class);
有关更多信息,请参阅 Jersey 用户指南中的 Jackson 部分。
【讨论】:
JacksonFeature 在org.glassfish.jersey.media:jersey-media-json-jakson 中。这个模块带来了 Jackson 1.9.x。如果你想使用 Jackson 2.x,只需添加对 com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider 的依赖,由于 META-INF/services 机制,它将自动启用。
Michal Gajdos 的回答是正确的,只是补充一点,在你的 pom.xml 中添加这个依赖,
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.26</version>
</dependency>
【讨论】: