我有这样的xml:
<game quarter="2">
<quarter number="1">
...
</quarter>
<quarter number="2">
...
</quarter>
</game>
和我的pojo类:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Game {
@JacksonXmlElementWrapper(localName = "quarter")
public Quarter[] quarters;
当我试图使用以下方式进行XML估算化时:
xmlMapper.readValue(getFileContent(PBP_XML_PATH), Game.class);
我得到:
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of Game$Quarter[] out of VALUE_STRING token
at [Source: java.io.StringReader@5f45632; line: 4, column: 1] (through reference chain: Game["quarter"])
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:261)
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:261)
at com.fasterxml.jackson.databind.DeserializationContext.reportMappingException(DeserializationContext.java:1234)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1122)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1075)
at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.handleNonArray(ObjectArrayDeserializer.java:275)
at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:179)
at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:20)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:499)
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:108)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3789)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2833)
看起来杰克逊无法处理同名的属性和属性。
出现,这是杰克逊 - dataformat-xml-2.9.0版本中的一个已知问题:
属性/元素名称碰撞在避难所化期间无法配置
如果元素具有具有相同名称的属性和子元素,则该属性似乎被忽略,并且使用的元素值
当前没有办法处理同义词(在属性或元素之间或具有不同名称空间的属性之间)。