Java 如何在HashMap中适应改装响应?

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

我想在HashMap中“适应”改造响应(因为我相信我必须这样做)。我怎么做?我试着延长费率等级,但毫无帮助。只是被困在这里,根本不知道怎么离开这里

JSON响应

    {
  "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类have
Map Map=new HashMap()
,也检查可能类似的线程在这种情况下,您需要逐个解析对象,
map.put(您的字符串,response.body().getRates().cAD);map.put(yourString,response.body().getRates().hKD)