在我开发的Android应用程序中,我非常高兴地使用了领域Java。我从服务器API接收JSONObject数组,而领域则通过主领域实例对象上的方便的createOrUpdateAllFromJson忠实地摄取它们。
这方面的典型流程如下:
// get API results into JSONArray jsonObjArrs variable
realm.beginTransaction();
realm.createOrUpdateAllFromJson(MyCoolModel.class,jsonObjArrs);
realm.commitTransaction();但是,我现在遇到了这样一种情况:我希望创建一个临时的内存中的数组,该数组包含相同的MyCoolModel对象,而不需要实际将它们保存到领域中,因为我希望在特定用例完成后立即将它们扔掉。在我看来,它类似于createOrUpdateAllFromJson,它的同级方法只能在主领域实例对象上使用。
有没有任何方法可以利用这个方便的JSON来实现对象模型创建者,或者我需要用手动/自动化的JSON解析来编写另一个实现呢?
发布于 2016-12-02 16:04:08
最后,我使用了领域的“内存领域”特性。我编写了一个简单的函数,它将返回一个新的内存中的领域实例,并以一个新的UUID作为名称:
public Realm unpersistedRealm(){
RealmConfiguration myConfig = new RealmConfiguration.Builder()
.name(UUID.randomUUID().toString())
.inMemory()
.build();
return Realm.getInstance(myConfig);
}我使用它作为一个单独创建的实例,仅仅是为了丢弃数据。我使用普通的inMemoryRealmInstance.createOrUpdateAllFromJson()调用创建对象,并在完成时关闭内存实例。我在片段的onCreateView()调用期间创建实例,并关闭onDestroyView()中的领域。
继续使用领域(尽管是内存中的实例)给了我以下独特的优势:
MyCoolModel密钥字段中。如果我要使用我之前想到的手动ArrayList<MyCoolModel>方法,我将不得不手动去复制,并担心其他已经为我解决的头痛问题。发布于 2016-12-01 08:46:57
如果您希望使用JSON结构中的内存对象,则应该查看标准的JSON解析器,如GSON、Jackson或Moshi。领域没有任何内置的方式来做到这一点。
发布于 2016-12-01 14:09:24
一个可笑的棘手的解决方案是
realm.beginTransaction();
realm.createOrUpdateAllFromJson(MyCoolModel.class,jsonObjArrs);
List<MyCoolModel> list = realm.copyFromRealm(realm.where(MyCoolModel.class)).findAll());
realm.cancelTransaction();
return list;但是你最好使用LoganSquare (或者GSON/Moshi/等等)
https://stackoverflow.com/questions/40894222
复制相似问题