我想将复杂的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多个字段,否则我必须手动转换。
答案 0 :(得分:1)
BeanMap在org.apache.commons.beanutils中可用,它会将带有setter和getter方法的简单bean类转换为map。对于你的用例,我认为你需要通过反射编写类似的util,你可以获得价值然后你找到属性的read方法并填充值。
代码示例:
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]