如何将.realm文件转换为其他任何内容

时间:2018-04-22 03:58:42

标签: json csv realm

我有一个我想要访问数据的领域数据库文件。我从手机上的应用程序中提取了它。不幸的是,我想以超出领域工作室能力的方式玩弄数据。

我的问题是,如何将.realm文件转换为另一种数据库格式(JSON,CSV)?我正在使用Windows 10.

1 个答案:

答案 0 :(得分:0)

因此,经过将近12个小时的艰苦工作,我终于能够将我的.realm文件中的RealmObjects转换为JSON文件。全是Java!

此过程适用于.realm文件中的一个模型定义。

以下是我的表现:

  1. 在android studio中创建一个新的应用程序(因为Realm for java是仅限android)并使用简单的活动预设启动它。
  2. 使用gradle将Realm-Java和GSON导入您的应用
  3. 使用Realm Studio,导出领域文件中所需类的Java模型定义。 (文件 - >保存模型定义 - > Java)
  4. 将这些.java文件复制到与MainActivity相同的文件夹中。我将把这些对象的名称称为$YOUR_OBJECT$
  5. 在您的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()方法。

  6. 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();
            }
    
  7. 特别注意!您的RealmObject不能有任何循环引用。任何类型的字段都是其他RealmObjects的集合。如果您的GSON对象溢出,那就是100%的原因。要删除循环引用,请在next.setREFERENCE(null);来电之前致电g.toJson()

  8. 将.realm文件放在应用程序的文件目录中(data/data/com.app.name/files

  9. 启动应用程序并按按钮。您的output.json将在与.realm文件相同的目录中生成。

  10. 这个过程并不完美(你会遇到一些小错误,但它们很小,我不会写下这些错误),但我希望它对你有所帮助,就像它会帮助我一样