簡體   English   中英

在Java中將對象轉換為自定義DTO列表

[英]Cast Object to List of Custom DTOs in java

這是代碼:

Object obj = getUsers();

List<UserDTO> userDTOList = new ArrayList<UserDTO>();

userDTOList = (ArrayList<UserDTO>)obj;

for (UserDTO userDTO : userDTOList) {

   do some stuff with userDTO   

}

“ getUsers()”的簽名如下

List<UserDTO> getUsers();

getUsers返回用戶列表,如果我打印對象(此處為obj變量),則可以看到它們。

obj實際上是一個json響應,如下所示

[{的firstName = A,姓氏= B,EMAILADDRESS = AB @ email.com},{的firstName = C,姓氏= d,EMAILADDRESS = CD @ email.com},{的firstName = E,姓氏= F,EMAILADDRESS = EF @ email.com}]

現在我面臨的問題是:

投射后,當我遍歷投射的userDTOList時,我看到所有單個的userDTO都攜帶相同的數據,盡管實際上它們是不同的,正如我在打印對象時可以確認的那樣。 就像第一個用戶信息被復制到其他人一樣。

與上面的示例一樣,3個userDTO應該攜帶單獨的用戶信息,但是我要說的是三個DTO的firstName = A。

知道如何解決此問題或這里出了什么問題嗎?

來自另一個DTO的getUsers / setUsers

private List<UserDTO> s$user;

public List<UserDTO> getUsers() {
    return s$user;
}

public void sets$user(List<UserDTO> s$user) {
    this.s$user = s$user;
}

UserDTO

    private String s$firstName;
private String s$lastName;
private String s$emailAddress;

和他們的getter / setter

所有DTO都通過json解析進行設置。

您是不是在說列表中的所有項目都不是UserDtos? 如果是這樣,請嘗試:

Object obj = getUsers();
List<Object> userDtoList = (ArrayList<Object>) obj;

for (Object userDtoObject : userDtoList) {
    if (userDtoObject instanceof UserDto) {
        UserDto userDto = (UserDto) userDtoObject;

        // Do stuff with userDto...
    }
}

編輯:

如果收到JSON響應,則不應該強制轉換它,而應使用諸如以下的庫:

暫無
暫無

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

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