嗨,我有以下依赖项的返回值。我正在尝试将其转换为代表它的POJO。

返回类型结构:

   DependencyAPIResult
     - List<Attribute>


每个属性具有以下类定义:

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;
    }
}


是否有可以用来使其变得更好的方法/映射器或Java 8 lambda函数?谢谢!

最佳答案

您可以将它们存储在Map中,而不是将forswitch一起使用:

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);

关于java - 将对象值列表转换为POJO,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49039214/

10-13 09:49