Serialization 使用XmlMapper序列化递归或复合对象
我在build.gradle文件中使用以下jackson xml依赖项。 “com.fasterxml.jackson.dataformat:jackson dataformat xml:2.11.3” 我的复合类如下所示:Serialization 使用XmlMapper序列化递归或复合对象,serialization,composite,jackson-dataformat-xml,xmlmapper,Serialization,Composite,Jackson Dataformat Xml,Xmlmapper,我在build.gradle文件中使用以下jackson xml依赖项。 “com.fasterxml.jackson.dataformat:jackson dataformat xml:2.11.3” 我的复合类如下所示: @Data @NoArgsConstructor @AllArgsConstructor class Person { private int noOfkids; private String spouseName
@Data
@NoArgsConstructor
@AllArgsConstructor
class Person {
private int noOfkids;
private String spouseName;
private List<Person> children = new ArrayList<>();
public void addChildren(Person p) {
children.add(p);
}
}
<Person>
<noOfkids>2</noOfkids>
<spouseName>spouse</spouseName>
<children>
<noOfkids>1</noOfkids>
<spouseName>child1 - spouse</spouseName>
<children>
<noOfkids>2</noOfkids>
<spouseName>childOfChild1 - spouse</spouseName>
</children>
</children>
</children>
<noOfkids>1</noOfkids>
<spouseName>child2 - spouse</spouseName>
<children/>
</Person>
<Person>
<noOfkids>2</noOfkids>
<spouseName>spouse</spouseName>
<children><children><noOfkids>1</noOfkids><spouseName>child1 - spouse</spouseName><children>
<children><noOfkids>2</noOfkids><spouseName>childOfChild1 - spouse</spouseName><children/></children></children>
</children><children><noOfkids>1</noOfkids><spouseName>child2 - spouse</spouseName><children/>
</children></children>
</Person>
我期望输出如下:
@Data
@NoArgsConstructor
@AllArgsConstructor
class Person {
private int noOfkids;
private String spouseName;
private List<Person> children = new ArrayList<>();
public void addChildren(Person p) {
children.add(p);
}
}
<Person>
<noOfkids>2</noOfkids>
<spouseName>spouse</spouseName>
<children>
<noOfkids>1</noOfkids>
<spouseName>child1 - spouse</spouseName>
<children>
<noOfkids>2</noOfkids>
<spouseName>childOfChild1 - spouse</spouseName>
</children>
</children>
</children>
<noOfkids>1</noOfkids>
<spouseName>child2 - spouse</spouseName>
<children/>
</Person>
<Person>
<noOfkids>2</noOfkids>
<spouseName>spouse</spouseName>
<children><children><noOfkids>1</noOfkids><spouseName>child1 - spouse</spouseName><children>
<children><noOfkids>2</noOfkids><spouseName>childOfChild1 - spouse</spouseName><children/></children></children>
</children><children><noOfkids>1</noOfkids><spouseName>child2 - spouse</spouseName><children/>
</children></children>
</Person>
2.
配偶
1.
子女1-配偶
2.
子女1-配偶
1.
子女2-配偶
但我得到的序列化xml如下所示:
@Data
@NoArgsConstructor
@AllArgsConstructor
class Person {
private int noOfkids;
private String spouseName;
private List<Person> children = new ArrayList<>();
public void addChildren(Person p) {
children.add(p);
}
}
<Person>
<noOfkids>2</noOfkids>
<spouseName>spouse</spouseName>
<children>
<noOfkids>1</noOfkids>
<spouseName>child1 - spouse</spouseName>
<children>
<noOfkids>2</noOfkids>
<spouseName>childOfChild1 - spouse</spouseName>
</children>
</children>
</children>
<noOfkids>1</noOfkids>
<spouseName>child2 - spouse</spouseName>
<children/>
</Person>
<Person>
<noOfkids>2</noOfkids>
<spouseName>spouse</spouseName>
<children><children><noOfkids>1</noOfkids><spouseName>child1 - spouse</spouseName><children>
<children><noOfkids>2</noOfkids><spouseName>childOfChild1 - spouse</spouseName><children/></children></children>
</children><children><noOfkids>1</noOfkids><spouseName>child2 - spouse</spouseName><children/>
</children></children>
</Person>
2.
配偶
1子女1-配偶
2儿童1-配偶
1子女2-配偶
有人能帮我解决这个问题吗?如果我使用JAXB,这很好。StringWriter编写器=新的StringWriter();JAXBContext context=JAXBContext.newInstance(Person.class);Marshaller m=context.createMarshaller();m、 封送处理(新JAXBElement(新QName(Person.class.getSimpleName()),Person.class,p1),编写器);System.out.println(writer.toString());//这是给我想要的输出