【问题标题】:Best design pattern for data model in restrofit rest android app which json data改造rest android应用程序中数据模型的最佳设计模式,其中json数据
【发布时间】:2015-07-17 14:52:05
【问题描述】:

我从https://www.youtube.com/watch?v=xHXn3Kg2IQE 了解到,这是应用程序中流程的最佳方法(使用服务、内容提供者等),但我不知道处理重试数据和接收数据的最佳实践(设计模式)是什么。所有数据均采用 JSON 格式。

所以我想开发简单的应用程序。该应用程序向服务器发出登录请求。作为回应,我得到了描述投票的令牌和 JSON。之后,我必须根据用户输入发送这个复杂的 JSON。这是一种需要填写的表格。投票系统。

{
  "data" : {
   "name": "Name of kind of voitng",
   "general_data" : [ {"name": "n1", "value":1}, {"name": "n1", "value":1}],
   "voits": [{"name": "n1", "value":1}, {"name": "n1", "value":1}],
} 
}

所以我有映射到这个 JSON 的类。但我还需要在活动中表示这些数据。所以现在我有两个班级。

    class GeneralDataElementJSON { 
String name; 
int value;
}
    class GeneralDataElementModel { 
String name; 
int value; 
boolean isVoited = false;
}
    class GeneralDataElementView extends View {}

现在,在我的方法中,我将检索到的数据映射到 *JSON 类的实例,然后将 *JSON 类的实例转换为 *Model 类的实例。 *View 类的实例是 *Model 实例的适配器,用于显示。

在用户输入后,我将 *Model 类的实例转换为 *JSON 类的实例,并且 *JSON 类的实例(使用改造)被转换为 JSON 并发送回服务器。

所以很复杂。我认为应该有更好的方法来做到这一点。但是怎么做呢?

【问题讨论】:

    标签: java android json design-patterns retrofit


    【解决方案1】:

    这就是我对 Retrofit 所做的。只需使用jsonschema2pojo 生成您的 POJO(模型类)。这将包含您所有的 getter 和 setter 以及序列化数据,供您根据需要使用和操作。

    假设您正在检索 Data 对象。当您使用 Retrofit 检索数据时,只需将它们放入 List<Data>。类似于以下代码:

    public interface DataService{
      @GET("/{user}/data")
      List<Data> listData(@Path("user") String user);
    }
    
    RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint("https://your.url.com")
    .build();
    
    DataService service = restAdapter.create(DataService.class);    
    
    List<Data> datas = service.listData("your_parameter");
    

    从设计的角度来看,我发现这是最优雅的方式,因为您的 POJO 应该随着 API 的变化而频繁地变化(也就是说,非常不频繁)。因此,可以自动生成您的代码并仅引用此黑盒。最好的代码是您不必编写的代码。小心不要过度架构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 2011-02-03
      • 2014-10-23
      • 2018-08-06
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多