Fre*_*red 6 java xml jackson jackson-dataformat-xml
我想知道在使用 Jackson ML 模块解析 XML 时是否可以忽略一个或多个节点。
我希望能够解析这个 XML
<bundle>
<id value="myBundleId"/>
<meta>
<profile value="http://myurl/profile1" />
<profile value="http://myurl/profile2" />
<tag>
<system value="https://myurl/system" />
<code value="myAppCode"/>
</tag>
</meta>
<type value="message" />
</bundle>
Run Code Online (Sandbox Code Playgroud)
进入这个 POJO 对象
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import lombok.Data;
@Data
public class Bundle {
@JacksonXmlElementWrapper(localName = "id")
@JacksonXmlProperty(isAttribute = true, localName = "value")
private String id;
@JacksonXmlElementWrapper(localName = "type")
@JacksonXmlProperty(isAttribute = true, localName = "value")
private String type;
}
Run Code Online (Sandbox Code Playgroud)
现在它不起作用,因为我认为注释 @JacksonXmlElementWrapper 仅适用于列表。
它还给了我以下错误消息:
java.lang.IllegalArgumentException:属性“value”的 setter 定义冲突
请尝试以下操作:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Bundle {
...
}
Run Code Online (Sandbox Code Playgroud)
或者:
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
Run Code Online (Sandbox Code Playgroud)
小智 0
如果我没记错的话,您可以在对象映射器上设置它,它将避免在不匹配的节点上引发异常。
objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);