如何將字串轉換為 DTO。
我正在做一些資料庫獲取并獲取字串。
List<String> tempString = myRepo.getData(str);
我在這里得到這樣的字串
{"LastName": "Ben", "FirstName": "David", "EmailAddress": "[email protected]"}
現在我想轉換為 dto。
我的dto會是這樣的。
@Data
@NoArgsConstructor
@AllArgsConstructor
@Component
public class UserDTO {
@JsonProperty("FirstName")
private String firstName;
@JsonProperty("LastName")
private String lastName;
@JsonProperty("EmailAddress")
private String email;
}
現在這是我正在嘗試但沒有得到成功的東西,我在這里缺少的任何東西。
ObjectMapper mapper = new ObjectMapper();
UserDTO userdeto;
try{
userdeto= mapper.readValue(tempString.get(i), UserDTO.class);
}
但這在這里是錯誤的,我有任何其他方法可以得到這個。
uj5u.com熱心網友回復:
使用 Java 8
似乎您正在從資料庫中獲取字串串列,您可以通過這種方法將字串串列轉換為 UserDTO 串列。
方法在這里:
在這里,我有stream字串串列,并使用操作將每個字串轉換String為UserDTO型別map()并將其收集為 UserDTO 串列。
在哪里,tempString是您從資料庫準備的串列(在我的情況下,它是硬編碼的,用于解決方案)
public class Test {
public static void main(String[] args) {
List<String> tempString = new ArrayList<>();
tempString.add("{\"LastName\": \"Ben\", \"FirstName\": \"David\", \"EmailAddress\": \"[email protected]\"}");
tempString.add("{\"LastName\": \"Ben2\", \"FirstName\": \"David1\", \"EmailAddress\": \"[email protected]\"}");
tempString.add("{\"LastName\": \"Ben3\", \"FirstName\": \"David2\", \"EmailAddress\": \"[email protected]\"}");
ObjectMapper mapper = new ObjectMapper();
List<UserDTO> userDtoList = tempString.stream().map(x -> {
UserDTO userDto = null;
try {
userDto = mapper.readValue(x, UserDTO.class);
} catch (JsonProcessingException e) {
System.out.println("exception" e);
}
return userDto;
}).collect(Collectors.toList());
System.out.println(userDtoList);
}
}
輸出:
[UserDTO(firstName=David, lastName=Ben, email=david@gravatar.com), UserDTO(firstName=David1, lastName=Ben2, email=david1@gravatar.com), UserDTO(firstName=David2, lastName=Ben3, email=david2@gravatar.com)]
uj5u.com熱心網友回復:
由于您使用的是 spring,如果您可以從 JpaRepository 擴展您的存盤庫,則可以直接從存盤庫本身轉換為 List UserDTO。
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT new com.UserDTO(u.firstName, u.lastName, u.email) FROM USER u WHERE u.user_id= :UserId ")
List<UserDTO> getData(@Param("userId") userId);
}
您需要在 DTO 中有一個匹配的建構式,并且需要在查詢中提供完整的包名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/516843.html
標籤:爪哇春天
