Java Springboot, кодировка результата результата RestTemplate - PullRequest
2 голосов
/ 06 марта 2019

У меня есть API, который читает из OracleDB. Если я вызываю это напрямую, он возвращает:

{
 ...
 ...
 numericField: 910010000346422907
 ...
 otherNumericField: 2018020800
 ...
}

но если я позвоню через Java-сервер Springboot, используя

URI targetUrl= UriComponentsBuilder.fromUriString(url)
            .queryParams(queryParameters)
            .build()
            .encode()
            .toUri();

RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(targetUrl, String.class);

значения в строке результата выглядят как

numericFiled: 9.1001000034642291E17 .... otherNumericField: 2.0180208E9

API возвращает Content-Type application/json; charset=UTF-8. Как я могу правильно прочитать числовое значение правильно?

1 Ответ

1 голос
/ 06 марта 2019

Вы должны создать класс POJO со всеми свойствами, что-то вроде этого, вы можете использовать lombok для создания Getters и Setters для вас с помощью аннотаций lombok

public class ResponseData {

      private double numericFiled

      private double otherNumericField

   // Getters and Setters

  }

А в вызове getForObject просто передайте тип Class

ResponseData result = restTemplate.getForObject(targetUrl, ResponseData.class);

Если вы не знаете схему JSON, тогда используйте Map<Object,Object> map, но всегда рекомендуется анализировать для модели, и вы также можетеигнорировать поля, которые вам не нужны и не знаю

...