Использование SerializationFeature.WRAP_ROOT_VALUE перед xmlRootElement - PullRequest
0 голосов
/ 10 января 2019

Я просто хочу понять, для чего используется SerializationFeature.WRAP_ROOT_VALUE. Я на самом деле пытался отключить SerializationFeature.WRAP_ROOT_VALUE и для класса, который я аннотировал с xmlRootElement. Вот в этом случае после отключения SerializationFeature.WRAP_ROOT_VALUE еще после сериализации я получаю корневое значение. Чтобы просто избежать корневого значения, я должен использовать xmlType. Итак, пытаясь понять, в чем польза от SerializationFeature.WRAP_ROOT_VALUE?

Пример кода, который я пробовал

@XmlRootElement(name="person")
Public class Person {
@XmlElement(name = "insert")
    private int insert;

    @XmlElement(name = "update")
    private int update;
}

Выше приведен класс POJO, который я пытался сериализовать, а также я использовал

 ObjectMapper mapper = new ObjectMapper();
 mapper.configure(SerializationFeature.WRAP_ROOT_VALUE, true);

Таким образом, с приведенным выше кодом на выходе получается

"person" {
       "insert" : 1,
       "update" : 0
}

В том же случае, если я пытаюсь изменить xmlRootElement на XmlType в классе Person, вывод будет

{
  "insert" : 1,
  "update" : 0
}

Так что я запутался, например, зачем использовать SerializationFeature.WRAP_ROOT_VALUE, если он не дает ожидаемого результата? Я использую версию Джексона 2.9.6

1 Ответ

0 голосов
/ 14 января 2019

После углубления в это обнаружил, что с помощью CXF я смог решить эту проблему, добавив небольшую конфигурацию в файл applicationcontext.xml

 <bean class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
    <property name="dropRootElement" value="true" />
 </bean>
...