Java 如何将DTO序列化为键值列表?
我想将复杂的DTO序列化为键值对的平面映射 因此,每个原语应直接转换为键值 每个列表本身都应该根据其在列表中的索引添加数字 例如:Java 如何将DTO序列化为键值列表?,java,serialization,Java,Serialization,我想将复杂的DTO序列化为键值对的平面映射 因此,每个原语应直接转换为键值 每个列表本身都应该根据其在列表中的索引添加数字 例如: public class PersonDTO { @XmlElement(name="THEPERSON") private String name; @XmlElement(name="THEAGE") private int age; private List<Pet> pets; } public class Pet {
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;
}
问:有没有任何框架可以帮助序列化这样的dto?
我的DTO可能包含100多个字段,否则我将不得不手动转换。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));
}
}
}
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]