Android 如何构造数据模型以实现正确的反序列化?

Android 如何构造数据模型以实现正确的反序列化?,android,rest,gson,retrofit,Android,Rest,Gson,Retrofit,我正在使用改型2.0来调用货币转换API。 我打电话: https://free.currencyconverterapi.com/api/v6/convert?q=USD_PLN 要收到此答复: { "query": { "count": 1 }, "results": { "USD_PLN": { "id": "USD_PLN", "val": 3.763304, "to": "PLN", "fr": "USD"

我正在使用改型2.0来调用货币转换API。 我打电话:

https://free.currencyconverterapi.com/api/v6/convert?q=USD_PLN 
要收到此答复:

{
  "query": {
    "count": 1
  },
  "results": {
    "USD_PLN": {
      "id": "USD_PLN",
      "val": 3.763304,
      "to": "PLN",
      "fr": "USD"
    }
  }
}
现在,我正在尝试构建数据模型,以便Gson能够正确地反序列化此响应。我有
ResponseWrapper.class

public class ResponseWrapper {

    private Query query;
    private ConversionPair results;

}
public class Query {
    private int count;
}
public class ConversionPair {
    private String id;
    private Currency from;
    private Currency to;
    private float value;
}
Query.class

public class ResponseWrapper {

    private Query query;
    private ConversionPair results;

}
public class Query {
    private int count;
}
public class ConversionPair {
    private String id;
    private Currency from;
    private Currency to;
    private float value;
}
ConversionPair.class

public class ResponseWrapper {

    private Query query;
    private ConversionPair results;

}
public class Query {
    private int count;
}
public class ConversionPair {
    private String id;
    private Currency from;
    private Currency to;
    private float value;
}

我应该如何处理响应主体中的
USD\u PLN
对象?我希望能够用不同的电话对拨打不同的电话。很明显,我不会为每一个可能的对创建单独的类?正确的处理方法是什么?

使用JsonElement作为结果类型:
JsonElement结果并手动将其转换为地图:

final Type type = new TypeToken<Map<String, ConversionPair>>(){}.getType();
final Map<String, ConversionPair> objects = new Gson().fromJson(results, type);
final-Type-Type=new-TypeToken(){}.getType();
最终映射对象=new Gson().fromJson(结果,类型);

现在,您可以在对象之间循环

最好的方法是让API团队更改字段并使其通用

 {  
   "query":{  
      "count":1
   },
   "results":{  
      "currency":{  // Currency should be fixed
         "id":"USD_PLN",
         "val":3.763304,
         "to":"PLN",
         "fr":"USD"
      }
   }
}
使用


不幸的是,这不是我要问的。USD_PLN是该货币对的特定对象。我如何处理更通用的对象?我认为如果API团队将此字段USD_PLN更改为Currency或其他表示全名的内容,并且应始终将值置于此字段下。那么你就不需要手动转换了。相应地修改了回复帖子。这里我只是想避免手动转换。