Retrofitを使用して、換算レートremote APIからデータを取得しようとしています。JSON、Retrofit 2、Android用コンバータ
arraylistを返す方法を尋ねることはありません... arraylistを返すか、Retrofitコンバータを使用する方が良いかどうか、そして改造コンバータがこのような状況に適しているかどうかを知りたいだけです。
{
"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,
...
}
}
私はJSONデータから私のオブジェクトを作成するには、このウェブサイトjsonschema2pojoを使用:このAPIは、私にこのようにフォーマットされたJSONを返す
。それは私に2つのクラス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を()を取得する一つの方法が含まれています。それから、私は交換レートを得るために私のQuotes
クラスのgetter()を呼び出さなければなりません。私はリスト内のすべての引用符を返し、すべてのgetterを呼び出す必要はありません...私はこれを簡単に私のExample
クラスまたは異なる方法。とにかくこれを行う最良の方法が何であるかを知りたいのですが、私は良い習慣の観点から、Dagger 2でMVPアーキテクチャを使用しています。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
それは*文字列の配列リスト*マップではありません – Selvin