Android 如何构造数据模型以实现正确的反序列化?
我正在使用改型2.0来调用货币转换API。 我打电话: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"
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或其他表示全名的内容,并且应始终将值置于此字段下。那么你就不需要手动转换了。相应地修改了回复帖子。这里我只是想避免手动转换。