java - JAX-RS、 jackson 和 JodaTime : not working automatic configuration

标签 java json jackson jax-rs jodatime

我正在尝试使用 JAX-RS (Jersey) 创建一个简单的 REST 服务,而不使用 Spring。我在我的实体中使用 Joda 作为日期字段。

为了配置自动 json 映射,我创建了一个 JsonMapperProvider,并在其中添加了 JodaModule:

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JsonMapperProvider implements ContextResolver<ObjectMapper> {

    final ObjectMapper objectMapper;

    public JsonMapperProvider() {
        objectMapper = new ObjectMapper();
        objectMapper.registerModule(new JodaModule());
    }

    @Override
    public ObjectMapper getContext(Class<?> arg0) {
        return objectMapper;
    }

}


这是我的资源类:

@Path("users")
public class UserController {

    @Inject
    private UserService userService;

    @GET
    @Path("/{id}")
    @Produces(MediaType.APPLICATION_JSON)
    public User getUserById(@PathParam("id") Long id) {

        return userService.findById(id);
    }
}


我在此类中使用“no web.xml”配置:

@ApplicationPath("api")
public class RestApplication extends ResourceConfig {

}


但它不起作用...用户实体中的 LocalDate 字段始终返回空。 我发现的唯一解决方法是在 ResourceConfig 类中注册所有组件(包括 jersey-media-json-jackson 中的 JacksonFeature 类),如下所示:

@ApplicationPath("api")
public class RestApplication extends ResourceConfig {

    public RestApplication() {
        super(
                UserController.class,
                JsonMapperProvider.class,
                JacksonFeature.class
        );
    }
}

这个问题还有其他解决办法吗?我不想手动注册此类中的所有服务和其他内容...

最佳答案

不,这就是它应该如何工作的。您还可以重写 javax.ws.rs.core.Application 中的方法,而不是扩展 ResourceConfig

关于java - JAX-RS、 jackson 和 JodaTime : not working automatic configuration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26547950/

相关文章:

java - 将 Spring 项目上传到有/没有服务器的 github 帐户以及如何嵌入 mysql 数据库

java - 如何访问 jsonarray 元素

java - 如何使用 Jackson 指定要序列化为 JSON 的特定字段?

c# - 系统文本 json 使用标准反序列化

javascript - 如何在 Sencha touch 中滑动多个屏幕

java - 有条件地遍历 JSON 列表并将值反序列化为 Java POJO 字符串

json - 如何使用 Kotlin + Jackson 将 JSON 反序列化为 List<SomeType>

java - 移动物体不会停留在设定的范围内?

java - 使用字符串数组中的条目作为创建新数组 Java 的名称

Java:选择排序我的实现与另一个