Хочу из приложения Spring Boot создать запрос на стороннее API, получить ответ в виде готового объекта Currency и далее работать с ним. То что сейчас имею - restTemplate возвращает объект, но все поля у него null, если этот запрос вбиваю в строку браузера - вижу адекватный JSON ответ.
Класс CurrencyAPI, который содержит метод для работы с restTemplate:
import by.andrew.bot.telegrambotmonitor.classesRespThirdPartyAPI.Currency;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
@Component
public class CurrencyAPI {
private final String URL_CURRENCY_RATE = "https://www.nbrb.by/api/exrates/rates/USD?parammode=2";
private RestTemplate restTemplate;
public CurrencyAPI(RestTemplateBuilder restTemplateBuilder) {
this.restTemplate = restTemplateBuilder.build();
}
public Currency getCurrencyRate(){
Currency currency = restTemplate.getForObject(URL_CURRENCY_RATE, Currency.class);
return currency;
}
}
И сам обьект, который должен быть создан из полученного JSON:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true)
public class Currency {
private int cur_ID;
private String cur_Abbreviation;
private String cur_Name;
private Double cur_OfficialRate;
public int getCur_ID() {
return cur_ID;
}
public void setCur_ID(int cur_ID) {
this.cur_ID = cur_ID;
}
public String getCur_Abbreviation() {
return cur_Abbreviation;
}
public void setCur_Abbreviation(String cur_Abbreviation) {
this.cur_Abbreviation = cur_Abbreviation;
}
public String getCur_Name() {
return cur_Name;
}
public void setCur_Name(String cur_Name) {
this.cur_Name = cur_Name;
}
public Double getCur_OfficialRate() {
return cur_OfficialRate;
}
public void setCur_OfficialRate(Double cur_OfficialRate) {
this.cur_OfficialRate = cur_OfficialRate;
}
}
Библиотека FasterXML/jackson
позволяет десериализовать объект из различных типов источников. Например, чтобы прочитать JSON из URL можно использовать метод readValue
класса ObjectMapper
. Нужно подготовить POJO класс, в который десериализовать JSON, или, если структура заранее не известна, то можно десериализовать в Map
или Object
:
URL url = new URL("https://www.nbrb.by/api/exrates/rates/USD?parammode=2");
ObjectMapper objectMapper = new ObjectMapper();
Map map = objectMapper.readValue(url, Map.class);
System.out.println(map);
Вывод:
{Cur_ID=145, Date=2020-11-25T00:00:00, Cur_Abbreviation=USD,
Cur_Scale=1, Cur_Name=Доллар США, Cur_OfficialRate=2.5548}
См. Десериализация строки JSON
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Мне нужно реализовать функцию приоритетностиТо есть как оно работает, при добавлении заметок пользователь сможет выбрать важность этой...
Подскажите пример или ключевые слова, чтобы искать в таком направлении
Не понимаю как получить Scene, для того, чтобы получить действие клавиатуры
В чатсности я хотел бы использовать insert в фоновом режиме то есть: