Я читал руководства по десериализации XML Джексона ( # 1 , # 2 ).Я попытался следовать примерам, написав некоторый код Java:
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.xml.XmlMapper;
public class JacksonDemo {
@JsonPropertyOrder({"age", "id", "name"})
public static class Person {
@JsonProperty("_id")
public String id;
public String name;
public int age;
@JsonIgnore
public String note;
}
public static void main(String[] args) throws Exception {
XmlMapper mapper = new XmlMapper();
Person value = new Person();
value.age = 4;
value.id = "12345";
value.name = "George";
value.note = "Invalid";
String s = mapper.writeValueAsString(value);
System.out.println(s);
}
}
В соответствии с инструкциями это должно привести к следующему выводу:
<Person><age>4</age><_id>12345</_id><name>George</name></Person>
Однако вместо этого это приводит кследующий ошибочный вывод:
<Person><id>12345</id><name>George</name><age>4</age><note>Invalid</note></Person>
Свойства расположены в неправильном порядке, поле «id» содержит неверный элемент XML, а поле «note» неправильно включено.Предположительно, различные java-аннотации должны изменить поведение Джексона, но кажется, что все аннотации игнорируются.Кто-нибудь знает, почему это так?
Это с jackson-xml-databind 0.6.2, jackson-annotations 2.6.0 и jackson 2.6.5.