提问人:gojic 提问时间:3/30/2021 更新时间:3/30/2021 访问量:421
获取 java.lang.IllegalArgumentException:尝试在 Retrofit 中动态更改密钥名称时无法创建转换器
Getting java.lang.IllegalArgumentException: Unable to create converter while trying to dynamiclly change keys name in Retrofit
问:
嗨,我试图在我的改造 @SerializedName() 中动态更改密钥。我关注了这个主题和这个主题,所以我明白,如果我想使用动态键(使用动态名称)解析JSON,我需要使用HashMap。但没有成功。更糟糕的是,我在调用此端点的 ApiCall 方法上遇到了此异常。此外,当我评论有问题的代码部分时,我的应用程序不会崩溃并获得响应 200,所以这肯定是我在尝试动态解析键名称时做错了什么
这就是我在这个例子中的代码的结构: InvestmentInForceModel -> InvestmentForceRegisteredInvestments-> PercentagesInvestmentInforce
我的 ApiCall
public Observable<InvestmentInForceModel> getInvestmentsInForce(){
return apiService.getInvestmentsInForce();
}
这是我的 JSON 中有问题的部分:
"registeredInvestments": {
"percentages": {
"2": 12.02,
"8": 87.98
},
"registeredInvestmentsData": [//other json stuff]
}
和我的模型:
public class InvestmentInForceModel {
@SerializedName("registeredInvestments")
private InvestmentForceRegisteredInvestments registeredInvestments;
}
my InvestmentForce注册投资
@SerializedName("percentages")
private Map<String,PercentagesInvestmentInforce> stringPercentagesInvestmentInforceMap;
@SerializedName("registeredInvestmentsData")
private List<RegisteredInvestmentsDataModel> registeredInvestmentsDataModelList;
}
最后:
public class PercentagesInvestmentInforce {
private int investmentsType;
}
私有字段没有@SerializedName因为我不知道该放什么,而且如果服务器没有发送任何内容,这个类也可能是空的,例如这些数字“2”和“8”有时可能只有一个不是 2 或 8 的数字,但如果你明白我想说什么,还有其他一些。
答: 暂无答案
上一个:在数组中查找重复值并删除它们?
评论
Float
Double
PercentagesInvestmentInforce
TypeAdapter<T>
TypeAdapterFactory
Retrofit
Map<String, Double>