【发布时间】:2011-05-10 14:07:09
【问题描述】:
我正在使用 jersey 公开一个服务,该服务使用 jaxb 注释类来配置 json 的外观。
我正在尝试在每个 json 元素中包含类型指令。我通过提供这样的 Provider 来做到这一点:
import org.codehaus.jackson.JsonParser.Feature;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ObjectMapper.DefaultTyping;
@Provider
@Produces(MediaType.APPLICATION_JSON)
public class CmsContextResolver implements ContextResolver<ObjectMapper> {
ObjectMapper mapper;
public CmsContextResolver() {
mapper = new ObjectMapper();
// @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include =
// JsonTypeInfo.As.WRAPPER_OBJECT, property = "@type")
mapper.configure(Feature.INTERN_FIELD_NAMES, true);
mapper.enableDefaultTypingAsProperty(DefaultTyping.NON_FINAL, "@type");
}
@Override
public ObjectMapper getContext(Class<?> arg0) {
return mapper;
}
}
而且这个提供商肯定会被选中。
10 May 2011 3:53:18 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Provider classes found:
class com.afrozaar.cms.service.CmsContextResolver
但这并没有什么不同。 json的格式不受影响。
据我所知,问题出在 jersey 没有使用 jackson 序列化这一事实?或者那件球衣忽略了我的杰克逊配置覆盖......
【问题讨论】: