如何使用键/值标签属性转换HashMap

时间:2017-03-23 06:34:05

标签: java json jackson

我有像Map<CategoryEnum, List<GroupEnum>>这样的HashMap,它代表了组枚举的类别明确列表。我们需要一个像

这样的代表
{
{
"category":"Category Enum1",
"groups":["g1","g2"]
},
{
"category":"Category Enum2",
"groups":["g1","g2"]
}
}

我创建了一个类似下面的POJO类,并手动映射POJO并返回CategoryGroup的列表。

    Class CategroyGroup{
    private Category category;
    private List<Group> groups;
//other code

    }

我没有找到一种方法来生成这种JSON而不引入新的POJO类。

1 个答案:

答案 0 :(得分:0)

我假设CategoryEnumGroupEnum有getValue方法。

假设这是您正在寻找的输出:

[{
    "category":"Category Enum1",
    "groups":["g1","g2"]
}, {
    "category":"Category Enum2",
    "groups":["g1","g2"]
}]

public List<CategoryGroup> getCategories(Map<CategoryEnum, List<GroupEnum>> map) {
    List<CategoryGroup> categories = new ArrayList<>();

    for (Map.Entry<CategoryEnum, List<GroupEnum>> entry : map.entrySet()) {
        CategoryGroup group = new CategoryGroup();
        group.setCategory(entry.getKey().getValue());
        group.setGroup(getGroupList(entry.getValue()));
    }
    return categories;
}

private List<Group> getGroups(List<GroupEnum> list) {
    List<Group> groups = new ArrayList<>();
    for (GroupEnum groupEnum : list) {
        groups.add(groupEnum.getValue());
    }
    return groups;
}