[英]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。
知道如何解決此問題或這里出了什么問題嗎?
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;
}
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.