Java 如何将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 {

我想将复杂的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;
}
问:有没有任何框架可以帮助序列化这样的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]