使用自定义复合键从服务器响应中获取Android Realm createOrUpdateAllFromJson

时间:2017-05-04 06:18:24

标签: android json realm

我正在与领域合作处理数据转移到&来自server.From服务器数据格式为:

{
"results":[  
  {  
     "unique_id":"8e54ca69-88cb-47f8-8280-f22b888cd50e",

     "breakdown":[  
        {  
           "entity":4,
           "parent_unique_id":"8e54ca69-88cb-47f8-8280-f22b888cd50e",
           //other data
        }
     ],
   //many other json objects and arrays
  }]}

到目前为止做了什么:

我正在基于entity和parent_unique_id在本地保存或更新唯一细分数据。 我一直在使用createOrUpdateAllFromJson()方法搜索如何做同样的事情,其中​​细分将根据这些唯一标识符进行更新。我可以通过查询每个对象,循环和更新来进行相同的检查。 但是有了大量的数据(即使是分页),它的计算效率并不高,而且非常耗时。

从我的搜索中发现,realm还没有任何compound primary key支持,即使我创建自定义复合主键,我也无法在使用createOrUpdateAllFromJson()时更新数据。

我的查询

是否有任何有效的方法可以从json更新我的故障数据而无需编写样板代码?

1 个答案:

答案 0 :(得分:0)

如果你已经有了一个Json结构,我只会操纵它,然后将所有内容解析为Realm。请记住,Realm忽略未在Realm模型类中定义的任何JSON属性:

这样的东西
// Create compound key
JSONArray arr = getResults();
for (int i = 0; i < arr.length(); i++) {
    JSONObject obj = arr.getJSONObject(i);
    JSONObject breakdown = obj.getJSONArray("breakdown").getJSONObject(0);
    obj.put("id", breakdown.getLong("entity") + "-" + breakdown.getString("parent_unique_id"));
}
realm.createOrUpdateAllFromJSon(arr);