Java XML反序列化导致JsonMappingException:无法反序列化类实例的值\u字符串标记

Java XML反序列化导致JsonMappingException:无法反序列化类实例的值\u字符串标记,java,xml,jackson,Java,Xml,Jackson,我有这样的xml: <game quarter="2"> <quarter number="1"> ... </quarter> <quarter number="2"> ... </quarter> </game> 当我尝试使用以下命令反序列化xml时: xmlMapper.readValue(getFileContent(PBP_XML_PATH), Game.class); 我得到:

我有这样的xml:

<game quarter="2">
  <quarter number="1">
    ...
  </quarter>
  <quarter number="2">
    ...
  </quarter>
</game>
当我尝试使用以下命令反序列化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)

看起来Jackson无法处理相同名称的属性和属性。

看起来,这是Jackson-dataformat-xml-2.9.0版本中的一个已知问题:

如果一个元素的属性和子元素具有相同的名称,则该属性似乎会被忽略,并使用元素值

目前无法处理同义词(属性或元素之间;或具有不同命名空间的属性之间)


不要截断堆栈跟踪。发布完整的堆栈跟踪。
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)