Я пытаюсь получить правильный JSON для@XMLElementWrapper проблема с Codehaus JacksonJaxbJsonProvider
public class MyTestResponse {
@XmlElementWrapper(name = "data")
@XmlElement(name = "values")
public List<String> test = Arrays.asList("Sidney");
}
теперь я получаю
"data": [
"Sidney"
],
вместо
"data":{
"values": [
"Sidney"
]
},
Я использую org.codehaus .jackson stack (1.9.0) внутри ServiceMix 7 M3.
Мой провайдер 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 но жгут оберните его?
Вы можете либо обернуть его внутри данных, либо внутри значений. Оба не поддерживаются. –
org.apache.cxf.jaxrs.provider.json.JSONProvider, например, визуализирует значения внутри элемента данных. Сначала мы использовали эту реализацию, но у нее есть проблема в том, что она не сериализует массив с одним элементом правильно. Вот почему мы переключили, но затем столкнулись с этой проблемой. Поэтому я не думаю, что ваш комментарий прав, верно? – mvermand