gpt4 book ai didi

java - 如何将DTO序列化为键值列表?

转载 作者:行者123 更新时间:2023-12-02 13:10:12 33 4
gpt4 key购买 nike

我想将复杂的 DTO 序列化为键值对的平面映射。

因此,每个原语都应该直接转换为键值。

每个列表本身都应该根据列表中的索引附加数字。

示例:

public class PersonDTO {
@XmlElement(name="THEPERSON")
private String name;

@XmlElement(name="THEAGE")
private int age;

private List<Pet> pets;
}

public class Pet {
private String name;
private String type;
}

期望的结果:

THEPERSON=test
THEAGE=16
PETNAME_1=pabbi
PETTYPE_1=rabbit
PETNAME_2=foxy
PETTYPE_2=fox
...
PETNAME_N=...

问题:是否有任何框架可以帮助序列化这样的 dto?我的 DTO 可能包含 100 多个字段,否则我必须手动转换这些字段。

最佳答案

BeanMap 可在 org.apache.commons.beanutils 中使用,它将使用 setter 和 getter 方法将简单的 bean 类转换为映射。对于您的用例,我认为您需要通过反射编写类似类型的 util,然后您可以获得值找到属性的读取方法并填充值。

代码示例:

public class BeanMapExample {

public static void main(String[] args) {

Person person = new Person();
person.setFirstName("gati");
person.setLastNmae("sahu");
person.setEmailId("abcd@gmail.com");
person.getMyFriendList().add("sahu");

BeanMap map = new BeanMap(person);

//Iterate through keys
Iterator<String> it = map.keyIterator();
it = map.keyIterator();
while (it.hasNext()) {
String key = it.next();
System.out.println(key + ": " + map.get(key));
}
}
}

输出:

firstName: gati
lastNmae: sahu
emailId: abcd@gmail.com
class: class pkg1.Person
myFriendList: [sahu]

关于java - 如何将DTO序列化为键值列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43982862/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com