[英]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.