因此,经过近12个小时的艰苦工作,我终于能够在我的中转换RealmObjects。将领域文件转换为JSON文件。而且都是Java!
此过程适用于中的一个模型定义。领域文件。
我是这样做的:
-
在android studio中创建一个新应用程序(因为java领域仅适用于android),并使用简单的活动预设启动它。
-
使用gradle将Realm Java和GSON导入应用程序
-
使用Realm Studio,导出Realm文件中类的所需Java模型定义。(文件->保存模型定义->Java)
-
复制这些。java文件与MainActivity放在同一文件夹中。我将这些对象的名称称为
$YOUR_OBJECT$
-
在MainActivity中,添加
Realm.init(this);
RealmConfiguration config = new RealmConfiguration.Builder()
.assetFile(getFilesDir().getPath() + "/NAME_OF_REALM_FILE.realm")
.name("NAME_OF_REALM_FILE.realm")
.schemaVersion(30)
.build();
Realm.setDefaultConfiguration(config);
final Realm realm = Realm.getInstance(config);
final Gson g = new Gson();
到
onCreate()
方法
-
替换的内容
onClick(View view)
具有
try {
File output = new File(getFilesDir(), "output.json");
BufferedWriter writer = new BufferedWriter(new FileWriter(output, true));
RealmResults results = realm.where($YOUR_OBJECT$.class).findAll();
Iterator<$YOUR_OBJECT$> iterator = results.iterator();
writer.write("{\"Output\": {");
while (iterator.hasNext()) {
$YOUR_OBJECT$ next = realm.copyFromRealm(iterator.next());
writer.write("\"" + <PUT SOMETHING HERE, LIKE AN ID> + "\": ");
writer.write(g.toJson(next));
writer.write(",");
}
writer.write("}}");
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
-
特别注意!!您的RealmObject不能有任何循环引用。任何类型的字段都是其他RealmObjects的集合。如果您的GSON对象溢出,这就是百分之百的原因。要删除循环引用,请调用
next.setREFERENCE(null);
在
g.toJson()
呼叫
-
放置您的。应用程序文件目录中的领域文件(
data/data/com.app.name/files
)
-
启动应用程序并按下按钮。您的输出。json将在与的相同目录中生成。领域文件。
这个过程并不完美(你会遇到一些小错误,但它们太小了,我不想写),但我希望它能帮助你,就像它能帮助我一样。