在我的情况下,如何从api获取准确的数据?

时间:2019-01-01 16:01:40

标签: android retrofit

我有具有特定结构的api,我需要获取用户特定的数据。

在Rates pojo中,我有eUR和gBP字段,如果要获取准确的货币汇率数据,我当然需要设置其中之一。 如您在我的代码的最后几行中所见,我有: 费率rate = data.getValue()。getRates(); 在这种情况下,我不会获得费率数据,但是,例如,如果我设置了getEUR,那么我将获得所需的确切数据。那么,在我看来,如何设置代码甚至重建代码以使我有机会在微调器中选择货币?

public class Currency {

@SerializedName("base")
@Expose
private String base;
@SerializedName("last_update")
@Expose
private String lastUpdate;
@SerializedName("rates")
@Expose
private Rates rates;
@SerializedName("status")
@Expose
private int status;
@SerializedName("target")
@Expose
private String target;

public String getBase() {
    return base;
}

public void setBase(String base) {
    this.base = base;
}

public String getLastUpdate() {
    return lastUpdate;
}

public void setLastUpdate(String lastUpdate) {
    this.lastUpdate = lastUpdate;
}

public Rates getRates() {
    return rates;
}

public void setRates(Rates rates) {
    this.rates = rates;
}

public int getStatus() {
    return status;
}

public void setStatus(int status) {
    this.status = status;
}

public String getTarget() {
    return target;
}

public void setTarget(String target) {
    this.target = target;
}



public class Rates {

@SerializedName("EUR")
@Expose
private double eUR;
@SerializedName("GBP")
@Expose
private double gBP;

public double getEUR() {
    return eUR;
}

public void setEUR(double eUR) {
    this.eUR = eUR;
}

public double getGBP() {
    return gBP;
}

public void setGBP(double gBP) {
    this.gBP = gBP;
}



 Rates rate = data.getValue().getRates();
            Log.d(TAG, String.valueOf(rate));

JSON:

{
"base": "USD",
"last_update": "2018-12-10T15:10:58.253Z",
"rates": {
    "EUR": 0.8769574627,
    "GBP": 0.7914459201
    },
"status": 200,
"target": "EUR,GBP"
}

2 个答案:

答案 0 :(得分:1)

目前还不清楚您的问题是什么。 您的应用程序中有一些东西可以确定使用哪种速率,对吗?你提到过微调器吗?那么,为什么不仅仅基于此调用getEUR()getGBP()呢?

所以很简单

Rates rates = data.getValue().getRates();
double rate;
if (eur) {   // or whatever logic you need to decide which rate to choose
   rate = rates.getEUR();
} else {
   rate = rates.getGBP();
}

答案 1 :(得分:0)

Parce Json使用 Map 而不是Rate对象来给对象评分。使用 map.keyset()方法

获取微调器值