使用jaxb注释时如何配置json格式

使用jaxb注释时如何配置json格式,jaxb,jersey,jackson,Jaxb,Jersey,Jackson,我正在使用jersey公开一个服务,该服务使用jaxb注释类来配置json的外观 我试图在每个json元素中包含type指令。为此,我提供了一个供应商: import org.codehaus.jackson.JsonParser.Feature; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.ObjectMapper.DefaultTyping; @Provider @Pro

我正在使用jersey公开一个服务,该服务使用jaxb注释类来配置json的外观

我试图在每个json元素中包含type指令。为此,我提供了一个供应商:

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;
        }
    }
但这没有什么区别。json的格式不受影响


据我所知,问题源于jersey没有使用jackson进行序列化?或者jersey忽略了我的jackson配置覆盖…

我不知道为什么您的代码不工作,但我使用的是:

import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JsonProvider extends JacksonJaxbJsonProvider {

    public JsonProvider() {
        super();
        setMapper( myConfiguredObjectMapper );
    }

谢谢,我本来想回答我自己的问题,但你帮我省去了麻烦。这就是我所做的:-),配置了我自己的jackson json提供程序。我遇到了与Jersey 2.4和jackson 2.2.3的OP相同的问题--我无法让运行时识别自定义对象映射器。。。我找到的每个解决方案都使用SpringMVC——我不是——除了这个。在找到你的解决方案之前,我一直在绞尽脑汁。谢谢
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;

@Provider
@Produces(MediaType.APPLICATION_JSON)
public class JsonProvider extends JacksonJaxbJsonProvider {

    public JsonProvider() {
        super();
        setMapper( myConfiguredObjectMapper );
    }