Я пытаюсь использовать Retrofit для получения данных по обменному курсу remote API.JSON, Retrofit 2 и конвертеры на Android
Для большей точности я не спрашиваю, как вернуть arraylist ... Я просто хочу знать, лучше ли возвращать arraylist или использовать преобразователь Retrofit, и если модифицированный конвертер подходит к подобной ситуации.
Этот API возвращает мне JSON, отформатированный как это:
{
"success": true,
"terms": "https://currencylayer.com/terms",
"privacy": "https://currencylayer.com/privacy",
"timestamp": 1487243354,
"source": "USD",
"quotes": {
"USDAED": 3.672503,
"USDAFN": 66.599998,
"USDALL": 127.501996,
"USDAMD": 486.119995,
"USDANG": 1.769648,
"USDAOA": 165.082001,
"USDARS": 15.37279,
"USDAUD": 1.299101,
"USDAWG": 1.8017,
"USDAZN": 1.729104,
"USDBAM": 1.842499,
"USDBBD": 2,
"USDBDT": 79.249746,
"USDBGN": 1.853047,
...
}
}
Я использовал этот сайт jsonschema2pojo создать свой объект из данных в формате JSON. Он создал меня двумя классами Example
и Quotes
. Мой Quotes
класс выглядеть следующим образом:
public class Quotes {
@SerializedName("USDAED")
@Expose
private Double uSDAED;
@SerializedName("USDAFN")
@Expose
private Double uSDAFN;
@SerializedName("USDALL")
@Expose
private Double uSDALL;
@SerializedName("USDAMD")
@Expose
private Double uSDAMD;
@SerializedName("USDANG")
@Expose
private Double uSDANG;
@SerializedName("USDAOA")
...
}
Example
класс содержит только один метод для извлечения Quotes
называемых getQuotes(), возвращающей Котировки объекта со всеми кавычками. Затем я должен вызвать getter() моего класса Quotes
, чтобы получить обменный курс. Дело в том, что я хотел бы иметь методы, которые возвращают мне все кавычки в списке и не должны вызывать все геттеры ... Конечно, я могу сделать это, легко модифицируя метод в моем классе Example
или в другом другом путь. В любом случае, я хотел бы знать, что было бы лучшим способом сделать это, я имею в виду хорошую практику, я использую MVP-архитектуру с Dagger 2. Я слышал о настраиваемом конверторе с Retrofit, может ли он быть полезным и подходящим в этом конкретном случае ? кстати, если у вас есть хорошая (понятная) ссылка о настраиваемом конвертере Retrofit, не стесняйтесь делиться ... Я делаю этот проект для образовательной цели, поэтому, пожалуйста, не предлагайте мне другой API, я хочу добиться его так, с этим API.
public class Example {
@SerializedName("success")
@Expose
private Boolean success;
@SerializedName("terms")
@Expose
private String terms;
@SerializedName("privacy")
@Expose
private String privacy;
@SerializedName("timestamp")
@Expose
private Integer timestamp;
@SerializedName("source")
@Expose
private String source;
@SerializedName("quotes")
@Expose
private Quotes quotes;
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
public String getTerms() {
return terms;
}
public void setTerms(String terms) {
this.terms = terms;
}
public String getPrivacy() {
return privacy;
}
public void setPrivacy(String privacy) {
this.privacy = privacy;
}
public Integer getTimestamp() {
return timestamp;
}
public void setTimestamp(Integer timestamp) {
this.timestamp = timestamp;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public Quotes getQuotes() {
return quotes;
}
public void setQuotes(Quotes quotes) {
this.quotes = quotes;
}
}
разместим ваш пример класса тоже. –
Эй, если вы хотите, чтобы все записи в ваших кавычках были списком arrayList, почему бы вам просто не изменить свой объект кавычек как arrayList строки. Я говорю о реструктуризации структуры JSON для начала. Таким образом вам не понадобится настраиваемый адаптер или что-то – Dibzmania
это не может быть * arrayList строки * это карта – Selvin