簡體   English   中英

將對象值列表轉換為POJO

[英]Convert a list of Object values to a POJO

嗨,我有以下依賴項的返回值。 我正在嘗試將其轉換為代表它的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而不是通過switch使用for

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

暫無
暫無

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

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