【问题标题】:Jackson empty xml array deserializationJackson空xml数组反序列化
【发布时间】:2013-08-22 04:28:35
【问题描述】:

我有一个来自 Recurly 服务的传入 xml,其中包含交易列表。有时它是空的,看起来像这样:

<transactions type="array">
</transactions>

我需要使用 Jackson 反序列化它。我尝试了下一个映射

@XmlRootElement(name = "transactions")
public class TransactionObjectListResponse extends ArrayList<TransactionObjectResponse> { 
}

其中每个事务的 TransactionObjectResponse 类。它适用于非空集合,但在没有交易时失败。出现下一条消息:

java.lang.IllegalStateException: Missing name, in state: END_ARRAY
at com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser.getCurrentName(FromXmlParser.java:310)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:289)
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:157)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:123)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:230)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:207)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:23)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)

我直接用XmlMapper,

xmlMapper.readValue(responseXml, TransactionObjectListResponse.class);

响应实体结构不严格,如有任何帮助,将不胜感激。谢谢。

【问题讨论】:

    标签: java xml jackson deserialization xml-deserialization


    【解决方案1】:

    我在运行 2.2 版本的“jackson-dataformat-xml”时遇到了类似的问题。我将这个库降为一个版本,它可以工作。

    即。 (如果您使用的是 Maven)

    <dependency>
      <groupId>com.fasterxml.jackson.dataformat</groupId>
      <artifactId>jackson-dataformat-xml</artifactId>
      <version>2.2.3</version>
    </dependency>
    

    这与第 3 方 java recurly 库使用的版本相同 - http://search.maven.org/#artifactdetails%7Ccom.ning.billing%7Crecurly-java-library%7C0.1.6%7Cjar

    【讨论】:

      猜你喜欢
      • 2012-10-22
      • 2018-10-26
      • 1970-01-01
      • 2020-05-27
      • 2013-05-02
      • 1970-01-01
      • 2013-12-06
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多