Картограф Джексона не отображает класс внутри arrayList - PullRequest
0 голосов
/ 03 июля 2019

если у меня есть этот POJO:

class Day {
   val meals: MutableList<Meal> = mutableListOf()
   lateinit val meal: Meal
}

и

class Meal {

}

Если я попытаюсь преобразовать HashMap map, представляющий модель Day, например:

val obj = objectMapper.convertValue(map, Day::class.java)

Джексон преобразует в еду только переменную meal, а не список.Вместо этого meals будет arrayList из HashMap.

Я попытался вручную преобразовать каждый Hashmap внутри meals в Meal объект, и это сработало, поэтому Hashmap внутри можно преобразовать в Meal и ошибок нет.

То, что я пытаюсь найти, это как сделать это автоматически.

1 Ответ

0 голосов
/ 03 июля 2019

Вы можете использовать приведенный ниже фрагмент кода для справки:

extractObjectWithTypeReference(data,new TypeReference<DataListUploadRequest<MakeModelUploadData>>(){});

создать ниже универсальный метод:

public static <T> T extractObjectWithTypeReference(Object object,TypeReference<?> typeReference) {
    return new ObjectMapper().convertValue(object,typeReference);
}

мой класс, как показано ниже:

public class DataListUploadRequest<T> {
    private List<T> dataList;
    public List<T> getDataList() {
        return dataList;
    }
    public void setDataList(List<T> dataList) {
        this.dataList = dataList;
    }
}
...