【发布时间】:2015-07-19 17:39:49
【问题描述】:
我正在编写一个 Android 应用程序,并使用 RetroFit 与 REST API 进行通信。我已经写了所有的类/POJO,除了一个。
这是特定类的 Java。
这是父类,这是问题的根源。我需要能够将userNameResponse 变量映射到下面JSON 中的用户名
public class DiTopicStats {
private UserNameResponse userNameResponse;
public UserNameResponse getUserNameResponse() {
return userNameResponse;
}
public void setUserNameResponse(UserNameResponse userNameResponse) {
this.userNameResponse = userNameResponse;
}
}
和子类,只要我能从上面的父类映射到它就可以了:
public class UserNameResponse {
//Fields
//Getters and Setters
}
返回的 JSON 包含一个随响应而变化的字段。该字段是用户名。例如:
{
"sMessage": "",
"diStatus": {
"diTopicWrongAns": {
//Some fields
},
"diOverallStats": {
//Some more fields
},
"diUserStats": {
"John Smith": { //PROBLEM: This name changes
//some other fields
}
}
}
}
所以在这种情况下,名称“John Smith”具有动态字段名称。实际上,它可以是任何包含字母、数字、- 或 . 的字符串。
我的问题是,如何使用 RetroFit 创建一个 Java 类,让 RetroFit 将字段映射到变量?
我知道您可以指定 SerialisedName,但这可以在运行时以编程方式完成,因为在这个阶段我将拥有 name 或用户。
谢谢。
【问题讨论】: