Java 8機能を使用して複数のEUMデータを単一のpojoに変換し、リストとして返す方法はありますか バックエンドの列挙型からドロップダウン値を返すシナリオがアプリケーションにあるため、これを試しています。
public enum TransactionTypeStatuses {
NEW("NEW"),
ACTIVE("ACTV"),
String code;
TransactionTypeStatuses(String code) {
this.code = code;
}
public String code() {
return code;
}
}
public enum MemberTypes {
CENTRAL_BANK("MB01"),
DIRECT_PARTICIPANT("MB02");
private String code;
private MemberTypes(String code) {
this.code =code;
}
public String getCode() {
return code;
}
}
public class EnumDataPojo {
private String id;
private String description;
//setters and getters
}
enumsデータをpojoに追加し、pojoをjson応答に変換します
public class Application {
public static void main(String[] args) throws JsonProcessingException {
List<EnumDataPojo> response = convertEnumsToPojo(); //contains the data of All enums in "id" and "desscription" format
ObjectMapper mapper = new ObjectMapper();
String response = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(data);
System.out.println(response);
}
stiatic List<EnumDataPojo> convertEnumsToPojo(){
List<EnumDataPojo> dataList = new ArrayList<>();
for(TransactionTypeStatuses enum1: TransactionTypeStatuses.values())
{
EnumDataPojo data1 = new EnumDataPojo ();
data1.setID(enum1.getCode());
data1.setdescription(String.value(enum1));
dataList.add(data1);
}
for(MemberTypes enum2: MemberTypes.values())
{
EnumDataPojo data2 = new EnumDataPojo ();
data2.setID(enum2.getCode());
data2.setdescription(String.value(enum2));
dataList.add(data2);
}
return dataList;
}
}
上記のコードからのjson応答
{
"transactionTypeStatuses":[ //enum
{
"id":"NEW",
"description":"New"
},
{
"id":"ACTV",
"description":"active"
}
],
"memberTypes":[ //enum
{ "id": "MB01", "description": "Central Bank" },
{ "id": "MB02", "description": "Direct Participant" }
]
}
回答を更新しました
public class EnumDataValues{
private String id;
private String description;
//getters and setters
}
//各列挙型をpojoに変換し、リストに入れます。
private List<EnumDataValues> getEnumReferenceData(Class<?> c) {
List<EnumDataValues> referenceDataList = new ArrayList<>();
List enumConstants = Arrays.asList(c.getEnumConstants());
if (!enumConstants.isEmpty()) {
enumConstants.forEach(t -> {
EnumDataValues referenceData = new EnumDataValues();
referenceData.setId(String.valueOf(String.valueOf(t)));
referenceData.setDescription(String.valueOf(t));
referenceDataList.add(referenceData);
});
}
return referenceDataList;
}
あなたのコードがあなたに正しい応答を与えるとは思いません。各列挙型のすべての値を取得するには、ループにデータを追加する必要があります
List<EnumDataValues> enum1DataList = new ArrayList<>();
for(Enum1 enum1: enum1.values()){
EnumDataValues data1 = new EnumDataValues ();
data1.setID(enum1.getCode());
data1.setdescription(String.value(enum1));
dataList.add(data1);
}
他の列挙型にも同じことをする
更新:
Map<String, List<EnumDataValues>>
応答タイプとして使用し、列挙型データを設定します。
Map<String, List<EnumDataValues>> convertEnumsToPojo(){
List<EnumDataPojo> dataList = new ArrayList<>();
for(TransactionTypeStatuses enum1: TransactionTypeStatuses.values())
{
EnumDataPojo data1 = new EnumDataPojo ();
data1.setID(enum1.getCode());
data1.setdescription(String.value(enum1));
dataList.add(data1);
}
List<EnumDataPojo> dataList2 = new ArrayList<>();
for(MemberTypes enum2: MemberTypes.values())
{
EnumDataPojo data2 = new EnumDataPojo ();
data2.setID(enum2.getCode());
data2.setdescription(String.value(enum2));
dataList2.add(data2);
}
Map<String, List<EnumDataValues>> map = new HashMap<>();
map.put("transactionTypeStatuses", enum1DataList);
map.put("memberTypes", enum2DataList);
return map;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加