泽西岛1.18.1。我在我的服务器上定义了以下Jersey资源:
@Path("/location")
@Produces(MediaType.APPLICATION_JSON)
public class LocationResourceImpl implements LocationResource {
private ObjectMapper mapper;
public LocationResourceImpl() {
super();
mapper = new ObjectMapper();
// TODO: Configure for JSON POJO mapping how?!?
}
@GET
@Path("address/{address_id}")
@Override
public Address getAddress(@PathParam("address_id") Long id) {
Address address;
address = new Address(
1L,
"19 ABC Dr",
"Suite 3",
"Testville",
"NY",
"US",
"12345");
return address;
}
}
我的Address
POJO已使用@JsonProperty
注释正确注释。我试图弄清楚如何配置我的ObjectMapper
实例,以便Address
返回的getAddress(Long)
实例将我的地址作为JSON返回。
关于我能做什么的任何想法?看起来在Jersey 2.x中添加了setSerializationConfig
和setDeserializationConfig
方法,但升级对我来说不是一个选项,因为我使用DropWizard 0.7.1,这取决于泽西岛1.18.x。
答案 0 :(得分:1)
使用Dropwizard,我们不需要任何基本的Jackson POJO映射支持的特殊配置。正如Dropwizard User Guide: How it's Glued Together:
中所述当您的应用程序启动时,它将启动Jetty HTTP服务器,请参阅
DefaultServerFactory
。该服务器将有两个处理程序,一个用于您的应用程序端口,另一个用于您的管理端口。应用程序端口也有一个
HttpServlet
,它由DropwizardResourceConfig
组成,它是Jersey资源配置的扩展,执行扫描以查找根资源和提供程序类。
DropwizardResourceConfig
是注册各种ResourceMethodDispatchAdapter
以启用以下功能的地方:
- 允许使用Jackson将请求实体解析为对象并从对象生成响应实体,同时执行验证。