![](/img/trans.png)
[英]Dynamic Response from Retrofit Json to Gson Android Kotlin/Java
[英]Retrofit/Android - dynamic response support
我在使用 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
字段,稍后我可以解析它以检索主题列表吗? 或者有没有其他解决办法?
有任何想法吗?
如果使用 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;
}
对于莫希:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.