我有一个父类,其中包含一个枚举" ActionType"。
@XmlRootElement(name="Action")
public class ActionDto {
[...] ActionType type;
}
和一些子类,它们扩展了ActionDto并具有更多特殊属性,如密码(LoginDto)。
它是服务器 - 客户端连接。 我想从我的客户端向我的服务器发送一些数据。所以我序列化它(我使用Jaxb) 并将其反序列化为ActionDto对象。
LoginDto-Object的示例:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Action>
<type>LOGIN</type>
<password>Testpassword</password>
</Action>
如果我想将它反序列化为ActionDto对象,我会收到错误 - 我认为这是由password-attribute引起的。我可以让Jaxb-unmarshaller忽略那些未知属性吗?
是否有其他可能直接将其解组到我的LoginDto-Object(服务器只接收xml-String,我不知道特殊类型)?
答案 0 :(得分:1)
默认情况下,JAXB实现将忽略未知元素。如果它抛出异常,则ValidationEventHandler
上的默认Unmarshaller
已被替换。您将需要用不太敏感的那个替换那个。
答案 1 :(得分:0)
如果您自己创建ObjectMapper,也可以尝试禁用该功能:
ObjectMapper mapper = new ObjectMapper()
.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);