簡體   English   中英

如何將DTO序列化為鍵值列表?

[英]How to serialize a DTO to key-value list?

我想將復雜的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類轉換為map。對於您的用例,我認為您需要通過反射來編寫類似的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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM