Warm tip: This article is reproduced from stackoverflow.com, please click
enums java json spring-mvc jackson

Is it possible in Java to return enum name and values together?

发布于 2020-03-27 10:28:17

Is it possible to get ENUM name and labels together? Like:

[
    {"COMBUSTIVEL", "Combustível"},
    {"TROCADEOLEO", "Troca de Óleo"},
    {"PNEUDIANTEIRO", "Pneu Dianteiro"},
    {"PNEUTRASEIRO", "Pneu Traseiro"},
    {"CORRENTE", "Corrente"},
    {"RELACAO", "Relação"}
]

I'm using Spring MVC, but I think it is irrelevant.

I tried to override the toString() method, but unfortunately it did not work.

My code:

public enum Categoria {
    COMBUSTIVEL("Combustível"), 
    TROCADEOLEO("Troca de óleo"), 
    PNEUDIANTEIRO("Pneu dianteiro"), 
    PNEUTRASEIRO("Pneu traseiro"), 
    CORRENTE("Corrente"), 
    RELACAO("Relação");

    private String label;

    Categoria(String item){
        this.label = item;
    }

    public String getLabel(){
        return this.label;
    }

    @Override
    public String toString() {
        return this.label;
    }

    public String[][] getList(){
        Categoria[] values = Categoria.values();

        return ?;
    }

}

The results is:

[
    "COMBUSTIVEL",
    "TROCADEOLEO",
    "PNEUDIANTEIRO",
    "PNEUTRASEIRO",
    "CORRENTE",
    "RELACAO"
]
Questioner
Willians Martins
Viewed
54
Roman Konoval 2019-07-03 23:28

This can be done like this:

        public static String[][] getList(){
            Categoria[] values = Categoria.values();

            String[][] result = new String[values.length][2]; 

            for (int i = 0; i < values.length; ++i) {
                String[] pair = {values[i].name(), values[i].toString()};
                result[i] = pair;
            }

            return result;
        }