json类型 "rates":{"AAA":5.023852,"BBB":77.682521}
一开始我都是手动做的,然后我AsyncTask得到json了,把它解析到我的课堂上
class ModelData {
private String name;
private Double value;
ModelData(String name, Double value) {
this.name = name;
this.value = value;
}
}
sqLite并将响应本身缓存在数据库中json。毕竟List<ModelDate>,我不能用 sqLite 写。这是另一个子问题:我是否理解正确,为了在 sqLite 中保存对象,我们创建一个重复该对象的 json,并将其作为字符串悄悄地保存在数据库中。并且ORMLite经常听到,但现在我认为需要将对象存储在数据库中。不知道她是怎么做到的,也许她也自动创建json并存储)
然后我决定实现retrofit 2(它必须最终实现),这自然是失去了一些灵活性,这就是问题所在:我的答案被解析了
@SerializedName("rates")
@Expose
private List<ModelData> ratesList;
但是我怎样才能ratesList将它保存在sqLite. 我知道我可以以某种方式将此工作表转换并保存回 Json,但是从数据库中读取时,我将不得不再次解析,而这仍然是一个解析器代码,尽管已经存在一个。
这就是我想要的:在 POJO 模型中,分别解析字段和原始 json 本身(需要什么注释来获取整个 json?或者需要什么)并且还能够解析从数据库接收到的 json 相同POJO 模型类。
我认为这不是一个糟糕的例子,说明 retrofit 2两者都sqLite被剥夺了灵活性,结果证明对于一个小项目来说是多余的,只有当项目增长时,我才会从它们中受益。
UPD1我意识到 您可以将其余 api 的接口配置为接受原始 json,例如:
@GET("{date}")
Call<JsonObject> getData(@Path("date") String date, @Query("access_key") String accessKey, @Query("base") String base);
但是我以后如何使用这个 JsonObject 的 POJO 模型来解析它,并将 Gson 转换器添加到改造中。这正是我在这个库中不明白的地方,解析中一般涉及到什么地方和什么方法。在什么时候连接转换器,可能已经在 okhttp3 级别的某个地方......总的来说,我厌倦了挖掘这个库
您有一些来自注释的异国愿望清单。为了方便在json中表示对象,我这样重新定义了
toString:当然,您
SQLite可以将一个序列化的对象塞入其中,但写下它的字段不是更好吗 - 每个字段都在自己的列中。一样ORMLite,也一样,只是没有你的参与。这将可以通过具有排序和其他SQL魅力的字段值进行选择。虽然SQLite你有自己的,json-API但当一切都到位时,工作仍然更方便。UPD
Retrofit为此目的,它的创建是为了让用户不会脑洞大开,而只是在他的界面中指出模型的类型,并从Response. 如果你需要干预这个过程,并以某种特殊的方式将 json 解析到模型中——阅读文档、文章、示例Gson——他可以做很多事情。https://github.com/google/gson/blob/master/UserGuide.md