我正在尝试为
获取正确的JSONpublic class MyTestResponse {
@XmlElementWrapper(name = "data")
@XmlElement(name = "values")
public List<String> test = Arrays.asList("Sidney");
}
我现在得到了
"data": [
"Sidney"
],
而不是
"data":{
"values": [
"Sidney"
]
},
我在ServiceMix 7 M3中使用org.codehaus.jackson stack(1.9.0)。
我的JSON提供程序扩展了org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider:
import org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider;
import org.codehaus.jackson.map.AnnotationIntrospector;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;
import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector;
import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
public class MyJsonProvider extends JacksonJaxbJsonProvider {
public JsonProvider() {
super();
ObjectMapper mapper = new ObjectMapper();
AnnotationIntrospector primary = new JaxbAnnotationIntrospector();
AnnotationIntrospector secondary = new JacksonAnnotationIntrospector();
AnnotationIntrospector pair = new AnnotationIntrospector.Pair(secondary, primary);
mapper.getDeserializationConfig().setAnnotationIntrospector(pair);
mapper.getSerializationConfig().setAnnotationIntrospector(pair);
this.setMapper(mapper);
}
}
如何告诉JacksonJaxbJsonProvider不要替换XmlElement名称,而是将其包裹起来?
答案 0 :(得分:0)
正如您所发现的,JSON编组不支持JAXB注释。在jackson ObjectMapper(您的实例名为mapper)
上启用以下MapperFeaturemapper.enable(MapperFeature.USE_WRAPPER_NAME_AS_PROPERTY_NAME);