gpt4 book ai didi

java - 将对象转换为 Java 中的自定义 DTO 列表

转载 作者:行者123 更新时间:2023-12-01 13:15:43 26 4
gpt4 key购买 nike

代码如下:

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,lastName=B,emailAddress=A.B@email.com},{firstName=C,lastName=D,emailAddress=C.D@email.com},{firstName=E,lastName=F,emailAddress=E.F@email.com}]

现在我面临的问题是:

在转换之后,当我迭代转换的 userDTOList 时,我看到所有单独的 userDTO 都携带相同的数据,尽管实际上它们是不同的,因为我可以在打印对象时确认。这就像第一个用户信息被复制给其他人一样。

与上面的示例一样,3 个 userDTO 应携带单独的用户信息,但我得到的结果是这三个 DTO 的 firstName=A。

知道如何解决这个问题或者这里出了什么问题吗?

从另一个 DTO 获取用户/设置用户

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;
}

用户DTO

    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 响应,则不应强制转换它,您应该使用以下库:

关于java - 将对象转换为 Java 中的自定义 DTO 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22491884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com