Java 如何将多个枚举数据写入单个pojo并将其作为列表返回

Java 如何将多个枚举数据写入单个pojo并将其作为列表返回,java,java-8,enums,Java,Java 8,Enums,是否有一种方法可以使用Java8特性将多个eums数据转换为单个pojo并将其作为列表返回。 我之所以尝试这样做,是因为我在应用程序中有一个从后端从枚举返回下拉值的场景 public enum TransactionTypeStatuses { NEW("NEW"), ACTIVE("ACTV"), String code; TransactionTypeStatuses(String code) { this.code = code;

是否有一种方法可以使用Java8特性将多个eums数据转换为单个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
}
将枚举数据添加到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;

    }

}
最新答案

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;
        }
私有列表getEnumReferenceData(c类){
List referenceDataList=new ArrayList();
List enumConstants=Arrays.asList(c.getEnumConstants());
如果(!enumConstants.isEmpty()){
enumConstants.forEach(t->{
EnumDataValues referenceData=新EnumDataValues();
referenceData.setId(String.valueOf(String.valueOf(t));
referenceData.setDescription(String.valueOf(t));
referenceDataList.add(referenceData);
});
}
返回引用的催化剂;
}

我认为您的代码不会给出正确的响应。您应该在循环中添加数据以获取每个枚举的所有值

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);
}
List enum1data=new ArrayList();
对于(Enum1 Enum1:Enum1.values()){
EnumDataValues data1=新的EnumDataValues();
data1.setID(enum1.getCode());
data1.setdescription(String.value(enum1));
dataList.add(data1);
}
对其他枚举执行相同的操作

更新:

使用
Map
作为响应类型并设置枚举数据

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;
}
Map convertEnumsToPojo(){
List dataList=new ArrayList();
对于(TransactionTypeStatuses枚举1:TransactionTypeStatuses.values())
{ 
EnumDataPojo data1=新的EnumDataPojo();
data1.setID(enum1.getCode());
data1.setdescription(String.value(enum1));
dataList.add(data1);
}
List dataList2=新的ArrayList();
对于(MemberTypes枚举2:MemberTypes.values())
{ 
EnumDataPojo data2=新的EnumDataPojo();
data2.setID(enum2.getCode());
data2.setdescription(String.value(enum2));
dataList2.add(data2);
}
Map Map=newhashmap();
map.put(“transactionTypeStatuses”,enum1DataList);
map.put(“成员类型”,enum2DataList);
返回图;
}

我不明白您为什么要在中设置相同的对象loop@Eklavya我对实际对象进行了编辑如果您在循环的每次迭代中都设置了数据1,那么每个enumprivate List getEnumReferenceData(类c){List referenceDataList=new ArrayList();List enumConstants=Arrays.asList(c.getEnumConstants())将只获得1个数据;if(!enumConstants.isEmpty()){enumConstants.forEach(t->{ReferenceData ReferenceData=new ReferenceData();ReferenceData.setId(String.valueOf(String.valueOf(t));ReferenceData.setDescription(String.valueOf(t));referenceDataList.add(ReferenceData);}返回referenceDataList;}我所做的是查找,而不是为每个枚举编写循环,尝试维护enumList(Enum1、Enum2..),然后遍历每个枚举并将值分配给pojo。你能建议一下有没有什么办法。谢谢,我不明白你想要什么。我给你的回应机构的解决方案。试着澄清你的问题,并表明你希望得到怎样的回答。编辑和希望现在是清楚的。使用ObjultMappor单独测试响应。如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。
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;
}