提问者:小点点

使用jackson更快的XmlMapper将简单的xml转换为java对象时出现问题


我有一个简单的xml,如下所示:

<token>
  <merchant>MyMerchant</merchant>
</token>

我要将此xml转换为以下类:

@JsonTypeName( value = "token" )
public class Token{
  @JacksonXmlProperty( localName = "merchant")
  private String merchant;
}

我使用的是具有以下代码的Jackson版本2.3.2:

   String simpleTokenXml = 
       "<token><merchant>MyMerchant</merchant></token>";
    XmlMapper xmlMapper = new XmlMapper(  );
    Token token = xmlMapper.readValue(simpleTokenXml, Token.class);

引发以下异常:

com.fasterxml.jackson.databind.JsonMappingException: Could not resolve type id 'merchant' into a subtype of [simple type, class data.model.Token]

如果我尝试将令牌对象转换为xml,XmlMapper将返回如下xml字符串:

<Token xmlns="">
<token>
    <merchant>MyMerchant</merchant>
</token>
</Token>

如何配置ObjectMapper以忽略ObjectNode?我需要我的映射器理解我的xml,而无需对其进行一些字符串操作。感谢帮助。


共1个答案

匿名用户

我解决了这个问题。问题是Token类的父类包含注释@JsonTypeInfo(use=Id. NAME)。将使用设置为NONE后一切正常。