Java 如何在HashMap中适应改装响应?
我想在HashMap中“适应”改造响应(因为我相信我必须这样做)。我怎么做?我试着延长费率等级,但毫无帮助。只是被困在这里,根本不知道怎么离开这里 JSON响应Java 如何在HashMap中适应改装响应?,java,android,json,retrofit,Java,Android,Json,Retrofit,我想在HashMap中“适应”改造响应(因为我相信我必须这样做)。我怎么做?我试着延长费率等级,但毫无帮助。只是被困在这里,根本不知道怎么离开这里 JSON响应 { "rates": { "CAD": 1.5495, "HKD": 9.1925, "ISK": 164.5, "PHP": 57.665, "DKK": 7.44
{
"rates": {
"CAD": 1.5495,
"HKD": 9.1925,
"ISK": 164.5,
"PHP": 57.665,
"DKK": 7.4412,
"HUF": 358.77,
"CZK": 26.338,
"AUD": 1.6171,
"RON": 4.8423,
"SEK": 10.3065,
"IDR": 17489.04,
"INR": 86.8225,
"BRL": 6.4205,
"RUB": 88.0675,
"HRK": 7.5335,
"JPY": 126.0,
"THB": 37.095,
"CHF": 1.0799,
"SGD": 1.6153,
"PLN": 4.4186,
"BGN": 1.9558,
"TRY": 8.7588,
"CNY": 8.0976,
"NOK": 10.406,
"NZD": 1.7541,
"ZAR": 19.9154,
"USD": 1.1861,
"MXN": 25.915,
"ILS": 3.9901,
"GBP": 0.8884,
"KRW": 1408.07,
"MYR": 4.9176
},
"base": "EUR",
"date": "2020-09-02"
}
Api
public interface ApiCall {
@GET("latest")
Call<CurrencyModel> getRates();
}
查看类
public class CurrencyModel {
@SerializedName("rates")
private Rates rates;
public Rates getRates() {
return rates;
}
class Rates{
@SerializedName("CAD")
public Double cAD;
@SerializedName("HKD")
public Double hKD;
@SerializedName("ISK")
public Double iSK;
@SerializedName("PHP")
public Double pHP;
@SerializedName("DKK")
public Double dKK;
@SerializedName("HUF")
public Double hUF;
@SerializedName("CZK")
public Double cZK;
@SerializedName("AUD")
public Double aUD;
@SerializedName("RON")
public Double rON;
@SerializedName("SEK")
public Double sEK;
@SerializedName("IDR")
public Double iDR;
@SerializedName("INR")
public Double iNR;
@SerializedName("BRL")
public Double bRL;
@SerializedName("RUB")
public Double rUB;
...
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.exchangeratesapi.io/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiCall call = retrofit.create(ApiCall.class);
call.getRates().enqueue(new Callback<CurrencyModel> () {
@Override
public void onResponse(Call<CurrencyModel> call, Response<CurrencyModel> response) {
if (!response.isSuccessful()) {
Log.i(TAG, "onResponse: error " + response.code());
}
HashMap<String, Double> map = response.body().getRates();
}
@Override
public void onFailure (Call <CurrencyModel> call, Throwable t){
Log.i(TAG, "onFailure: " + t.getMessage());
}
});
}
}
public类MainActivity扩展了AppCompatActivity{
私有静态最终字符串TAG=“MainActivity”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
改装改装=新改装.Builder()
.baseUrl(“https://api.exchangeratesapi.io/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiCall调用=改装.create(ApiCall.class);
call.getRates().enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
如果(!response.issusccessful()){
Log.i(标记“onResponse:error”+response.code());
}
HashMap=response.body().getRates();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.i(标记“onFailure:+t.getMessage());
}
});
}
}
您所说的改装是什么意思?改装是一个http客户端库。如果我理解这个问题。。。我相信OP希望收到一个反序列化的速率图。这样,rates.get(“CAD”)会返回适当的值吗?这是否正确?在正确获得响应后。我想获取关键字(如CAD、HKD等)和值(这些货币的值)并将其放入Mapmake your Rates类haveMap Map=new HashMap()
,也检查可能类似的线程在这种情况下,您需要逐个解析对象,map.put(您的字符串,response.body().getRates().cAD);map.put(yourString,response.body().getRates().hKD)代码>