我在使用Retrofit将生成的json数据映射到pojo类时遇到了问题。我需要通过令牌确定Firebase主题。这可以通过Google的json api完成,如下所述:https://developers.google.com/instance-id/reference/server#get_information_about_app_instances
就我而言,服务器响应与此类似:
{
"applicationVersion": "36",
"connectDate": "2018-02-04",
"attestStatus": "ROOTED",
"application": "<my application id>",
"scope": "*",
"authorizedEntity": "205414012839",
"rel": {
"topics": {
"topic1": {
"addDate": "2018-02-04"
},
"topic2": {
"addDate": "2018-01-31"
}
}
},
"connectionType": "WIFI",
"appSigner": "<hash>",
"platform": "ANDROID"
}
问题基本上是rel
和topics
结构,因为topics
是动态的,字段列表可以是任何内容,而且它是未知的。所以我无法生成简单的POJO来自动地通过Retrfofit进行映射。
我可以强制使用Retrofit将topics
视为单个String
字段,稍后我可以解析它以检索主题列表吗?或者还有其他的洗液吗?
有什么想法吗?
答案 0 :(得分:1)
如果使用gson,则可以将rel定义为JsonElement。如果使用moshi,则可以将其定义为Map。 对于gson:
public class Response{
private String applicationVersion;
private String connectDate;
private String attestStatus;
private String application;
private String scope;
private String authorizedEntity;
private String connectionType;
private String appSigner;
private String platform;
private JsonElement rel;
}
对于moshi:
public class Response{
private String applicationVersion;
private String connectDate;
private String attestStatus;
private String application;
private String scope;
private String authorizedEntity;
private String connectionType;
private String appSigner;
private String platform;
private Map<String, Map<String, Map<String, String>>> rel;
}