我有具有特定结构的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"
}
答案 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()方法
获取微调器值