簡體   English   中英

變換Map<string, object> 到 Object 使用 Java 流</string,>

[英]Transform Map<String, Object> to Object using Java streams

我有一個 Map<String, Object>,我想將其轉換為 Object。 基本上 Map 將包含以下內容:

username xyz
password abc

我想將其轉換為具有兩個字段的 SimpleUser object:用戶名和密碼。 當前代碼看起來像這樣,但我想知道是否可以在 Stream 中進行 object 初始化:

Map<String, String> user = adapter
    .getSecret("abc")
    .orElseThrow()
    .entrySet().stream()
    .collect(Collectors.toMap(Entry::getKey, v -> v.getValue().toString()));

return new SimpleUser(user.get("username"), user.get("password"));

這是一種不好的做法,但將它們全部放在一條線上是一種棘手的方法。 僅當SimpleUser(對象)字段名稱與 Map 即用戶名和密碼相同時,才使用 jackson objectMapper。

SimpleUser u = new ObjectMapper().convertValue(
adapter.getSecret("abc")orElseThrow().entrySet().stream()
.collect(Collectors.toMap(Entry::getKey, v -> v.getValue().toString()))
, SimpleUser.class);

你將需要這個庫。

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.0</version>
</dependency>

供你參考。

暫無
暫無

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

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