将字段映射转换为类实例

时间:2019-04-10 11:13:45

标签: java android list dictionary transformation

假设我有一个简单的HashMap

Map<String, String> map = new HashMap<>();
map.put("field1","value1");
map.put("field2", "value2");

我也有简单的java类:

class SimpleClass {
 public String field1;
 public String field2;
}

使用来自地图的相应字段/值来创建SimpleClass实例的最简单,最优雅的方法是什么?在这种情况下,生成的SimpleClass实例应获得field1值'value1 and field2 value value2`。

SimpleClass已经定义,现在我们需要在map中找到匹配的键,如果找到匹配项,则应将其值分配给相应的类字段。

在我的真实应用程序中,我将获得地图列表,并且需要将其转换为List<SimpleClass>。 Map可以包含需要省略的其他键(如果没有匹配的类字段可用)。

我可以使用(例如)番石榴来进行这种转化吗?我在Android上,因此到目前为止无法使用Java流。

[编辑]

我的尝试

 private SimpleClass mapToObject(Map<String, String> map)
    {
        SimpleClass result = new SimpleClass();

        for(Field f: result.getClass().getDeclaredFields())
        {
            try
            {
                f.setAccessible(true);
                f.set(result,map.get(f.getName()));
            }
            catch (Exception e)
            {
                Log.d("error", e.toString());
            }

        }
        return result;
    }

1 个答案:

答案 0 :(得分:0)

使用ObjectMapper,

SimpleClass  simpleClass = objectMapper.convertValue(map, SimpleClass.class);