преобразовать поля отображения в экземпляр класса - PullRequest
0 голосов
/ 10 апреля 2019

Допустим, у меня есть простое 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 значение 'значение1 and поле2 value значение2`.

SimpleClass уже определен, теперь нам нужно найти соответствующие ключи на карте, если совпадение найдено, его значение должно быть присвоено соответствующему полю класса.

В моем реальном приложении я получу список карт, и мне нужно преобразовать его в List<SimpleClass>. Карта может содержать дополнительные ключи, которые необходимо пропустить (если нет подходящего поля класса).

Могу ли я использовать (например) гуаву для такого преобразования? Я работаю на 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 голосов
/ 10 апреля 2019

Использовать ObjectMapper,

SimpleClass  simpleClass = objectMapper.convertValue(map, SimpleClass.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...