将对象值列表转换为 POJO
Convert a list of Object values to a POJO
您好,我从依赖项中获得了以下 return 值。我正在尝试将它转换为我用来表示它的 POJO。
Return类型结构:
DependencyAPIResult
- List<Attribute>
每个属性都有以下 class 定义:
public class Attribute {
@NonNull private final AttributeKey key;
@NonNull private final AttributeValue value;
Getters
.
.
.
Setters
.
.
.
}
我想将此结果映射到由以下内容表示的 POJO:
public class MyPOJO {
private pojoId;
private pojoName;
private pojoValue;
}
我目前将结果转换为POJO的方式是这样的:
String pojoId = null;
String pojoName = null;
String pojoValue = null;
for (Attribute attribute : result.getAttributes()) {
switch (attribute.getKey().getName()) {
case "pojoId"
id = attribute.getValue().getStringValue();
break;
case "pojoName":
name = attribute.getValue().getStringValue();
break;
case "pojoValue":
pojoValue = attribute.getValue().getStringValue();
break;
default:
break;
}
}
是否有 method/mapper 或 Java 8 lambda 函数,我可以使用它来改进它?谢谢!
您可以将它们存储在 Map
中,而不是将 for
与 switch
一起使用:
Map<String, String> valuesByKeyName =
result.getAttributes().stream()
.collect(Collectors.toMap(k -> k.getKey().getName(),
v -> v.getValue().getStringValue()));
String id = valuesByKeyName.get("pojoId");
String name = valuesByKeyName.get("pojoName");
String pojoValue = valuesByKeyName.get("pojoValue");
Pojo pojo = new Pojo(id, name, pojoValue);
您好,我从依赖项中获得了以下 return 值。我正在尝试将它转换为我用来表示它的 POJO。
Return类型结构:
DependencyAPIResult
- List<Attribute>
每个属性都有以下 class 定义:
public class Attribute {
@NonNull private final AttributeKey key;
@NonNull private final AttributeValue value;
Getters
.
.
.
Setters
.
.
.
}
我想将此结果映射到由以下内容表示的 POJO:
public class MyPOJO {
private pojoId;
private pojoName;
private pojoValue;
}
我目前将结果转换为POJO的方式是这样的:
String pojoId = null;
String pojoName = null;
String pojoValue = null;
for (Attribute attribute : result.getAttributes()) {
switch (attribute.getKey().getName()) {
case "pojoId"
id = attribute.getValue().getStringValue();
break;
case "pojoName":
name = attribute.getValue().getStringValue();
break;
case "pojoValue":
pojoValue = attribute.getValue().getStringValue();
break;
default:
break;
}
}
是否有 method/mapper 或 Java 8 lambda 函数,我可以使用它来改进它?谢谢!
您可以将它们存储在 Map
中,而不是将 for
与 switch
一起使用:
Map<String, String> valuesByKeyName =
result.getAttributes().stream()
.collect(Collectors.toMap(k -> k.getKey().getName(),
v -> v.getValue().getStringValue()));
String id = valuesByKeyName.get("pojoId");
String name = valuesByKeyName.get("pojoName");
String pojoValue = valuesByKeyName.get("pojoValue");
Pojo pojo = new Pojo(id, name, pojoValue);