首页 > 解决方案 > Jackson-xml 不解析嵌套对象

问题描述

Jackson 没有正确地将 xml 解析为 java 对象。尽管在 xml 中此对象具有值,但它返回 null 对象。作为 null 返回的对象在其他地方使用并且可以工作。

我尝试解析 xml 的一部分(这在 java 对象中为空)并且它有效。

@Getter
@Setter
@JsonIgnoreProperties
public class Group {
@JacksonXmlElementWrapper(useWrapping = false, localName = "array")
private List<Array> array = new ArrayList<>();
@JacksonXmlElementWrapper(useWrapping = false, localName = "struct")
private List<Struct> struct = new ArrayList<>();
...
}

@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class Struct {
@JacksonXmlElementWrapper(useWrapping = false)
private List<Par> par = new ArrayList<>();
...
}

@Getter
@Setter
@JsonIgnoreProperties
public class Array {
@JacksonXmlProperty
private Struct struct;
...
}

编辑:有xml文件的例子

<config>
 <group name="sys">
  <desc>sss</desc>
  <define name="DYN">
   <const>1</const>
   <desc>
   </desc>
  </define>
  <par name="show_time" type="ACT" len="1">
   <snmp oid="1">ssss</snmp>
   <val>0</val>
   <desc>Show system</desc>
  </par>
  <struct name="compatibility_">
   <desc>
   </desc>
   <par name="link" type="PAR" len="1" range="0,1">
   <snmp oid="232">ssss</snmp>
   <val>0</val>
   <desc>
   </desc>
   <define name="POLL_AND_INTERRUPT">
   <mask>0</mask>
   <desc>
   </desc>
  </par>
 </struct>
 <array name="DYN_STRUCT" len="1" max="32">
  <struct name="script_" key="name">
   <desc>
   </desc>
   <par name="name" type="STRING" len="32">
   </par>
  </struct>
 </array>
</group>

标签: javaxmljackson

解决方案


推荐阅读