java - 如何处理几十个不同的 JSON 响应?

标签 java android json gson retrofit

在我的整个应用程序中,我从我的网络服务器请求 JSON 数据,而响应几乎总是不同的。

例如,一个响应可能如下所示:

{"success":true,"data":{"token_id":"pPt9AKl0Cg","token_key":"8ax224sFrJZZkStAQuER"}}

另一个可能是这样的:

{"success":true,"data":{"user_id":"20","username":"Bob"}}

另一个可能是这样的:

{"success":true,"data":{"user_id":"20","stats":{"followers":"500","following":"12"}}}

之前,我为每种不同的响应类型创建了一个模型类 (Java)。例如,对于上面的第一个响应,我的模型类可能如下所示:

public class MyResponseModel {
        private boolean success;
        private DataModel data;

    public static class DataModel {
        private String token_id;
        private String token_key;
    }

    ...
}

这真的是最好的方法吗?因为如果我对我在我的应用程序中收到的十几个响应执行此操作,我最终会得到十多个不同的模型类,每个不同的响应一个。

是否有解析 JSON 的替代方法?

谢谢。

最佳答案

每种类型的响应都需要一个 DTO 或模型类。从 json 序列化/反序列化到 json 需要静态类型。您可以使用泛型来包装响应。重构你的代码,这将是这样的:

public class MyResponseModel <T> {
        private boolean success;
        private T data;
} 
 public class DataModel {
        private String token_id;
        private String token_key;
 }

然后你的代码可以返回MyResponseModel<DataModel>此场景的对象。

如果您真的想为每种类型的响应使用一个类,您需要将所有响应表示为键值对,然后您可以拥有一个包含 Map 的类。我不会推荐这种方法,并且更愿意为每种类型的响应设置一个类。

关于java - 如何处理几十个不同的 JSON 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355612/

相关文章:

java - Android 短信观察失败

android - 以编程方式设置 collapsingToolbarLayout 的高度

json - 如何避免 Play Framework Json Reads 提供的自动转换,而是获取异常

ios - 在 iOS 5 中刷新 JSON 表

java - Spring安全不允许资源,登录后浏览器只显示一个css文件?

java - Android Studio : HorizontalView

java - GWT 验证-Api GA

android - Room SQL 自动生成主键返回 0 或 null

java - 在这种情况下如何使用@JsonProperty - jackson API with lombok

java - 构建我的 Android ReactJs Native 应用程序时遇到问题