Как получить значение из объекта generi c - PullRequest
1 голос
/ 06 августа 2020

У меня следующий запрос с этими полями:

Платеж (Тип платежа) -> Параметры (Тип объекта). Я знаю, что у этого класса параметров есть следующие поля:

  • token (String)
  • type (String)
  • cvv (String)

Я пытаюсь получить доступ к полю токен от до request.getPayment().getParameters(), но я действительно не знаю, как заставить его работать. Я нашел кое-что, связанное с отражением, но я действительно не знаю, как это может работать.

Я пробовал что-то вроде, но до сих пор не знаю, как получить этот строковый «токен»:

   Field field = org.springframework.util.ReflectionUtils.findField(String.class, "token");
   org.springframework.util.ReflectionUtils.makeAccessible(field);
        
   String token = field.get(request.getPayment().getParameters().????) ????

1 Ответ

0 голосов
/ 06 августа 2020

Если вы уверены, что эти поля всегда будут в этом общем объекте c, вы можете просто использовать приведение:

class PaymentParameter {
   String token;
   String type;
   String cvv;

   ... // getters & setters or Lombok stuff
}
...
var paymentParameters = (PaymentParameters) request.getPayment().getParameters();

Подробнее о приведении можно узнать здесь и здесь .

Имейте в виду, что при кастинге может быть выброшено ClassCastException. Таким образом, вы должны охватить этот случай в своем коде.

Второй вариант заключается в том, что ваш запрос представляет собой строку JSON, тогда вы можете использовать Джексон для преобразования ее в карту или объект. Этот топи c распространяется также на Baeldung .

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