繁体   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