Получение имен классов от объекта - PullRequest
0 голосов
/ 15 января 2020

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

Это мой текущий код:

ObjectMapper aObjectMapper = new ObjectMapper();
aClass request = aObjectMapper.readValue(String, aClass.class);

, который отлично работает.

Теперь вместо aClass я хочу иметь возможность сопоставления с любым именем класса c, однако пытаясь что-то вроде

Class theRandomClass = theRandomClass.class; 
theRandomClass.getClass() request = aObjectMapper.readValue(String, 
                                     theRandomClass.getClass()) //gives an error

Есть идеи, как подойти к этому? Очень ценится.

1 Ответ

1 голос
/ 15 января 2020

Class theRandomClass = theRandomClass.class; присваивает java.lang.Class объект theRandomClass.

, что означает

aObjectMapper.readValue(String, theRandomClass.getClass())

Попытка десериализации строки JSON в объект java.lang.Class. Если неясно, в чем проблема, то обратите внимание, что программы не могут просто go создать java.lang.Class экземпляров, поэтому Джексон не сможет десериализовать строку.

Что вам нужно, это

aObjectMapper.readValue(String, theRandomClass)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...