restrofit rest android app which json data 中数据模型的最佳设计模式

Best design pattern for data model in restrofit rest android app which json data

我从 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。但我还需要在 activity 上表示这些数据。所以现在我有两个 类.

    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 并发送回服务器。

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

这就是我对 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 更改一样频繁地更改(即非常不频繁)。因此,可以自动生成您的代码并仅引用此黑盒。最好的代码是您不必编写的代码。注意不要过度架构。