【问题标题】:Is it common practice to store objects internally as json using gson?使用 gson 在内部将对象存储为 json 是常见的做法吗?
【发布时间】:2019-09-11 18:41:51
【问题描述】:

我很难找到关于在内部或根本上存储对象的最佳方式的清晰解释或文档。

将对象转换为json来存储它们是常见的做法吗?有没有更好的方法来做到这一点?

我有一个相对简单的对象,其中包含一些字符串字段和其他包含原始类型的对象字段。

【问题讨论】:

  • 也许房间图书馆就是你所需要的一切
  • 嗨,欢迎来到 StackOverflow。 “内部存储对象”是什么意思?对我来说,“存储”意味着持久性,它是外在的。
  • 您将对象存储在哪里?您使用的是平面文件吗?还是你在使用数据库?
  • 我指的是 android,存储在内部存储中,而不是外部、sharedpreferences 和数据库

标签: java android json android-studio gson


【解决方案1】:

有多种方法和选项可以“在内部”保存您的应用可以访问的对象。

  1. Realm - 这是一个很好的入门者,有很好的文档,并且有一个非常直接的方法来保存和取回对象。

一个好的开始方式是Tutorial for Realm

  1. Room - Android 的官方持久性库。这可能有点进步,但在 StackOverflow 上也有大量的社区,并且有大量来自 Google 和其他媒体的在线教程。

有关教程,请参阅Tutorial for Room

  1. Shared Preference - 还有其他方法可以做到这一点,例如共享首选项,我建议只存储少量数据,例如用户名、用户 ID 和其他小尺寸对象。

干杯

【讨论】:

    【解决方案2】:

    JSON 主要用于在两个软件系统之间发送数据。它也可以用于存储,但不是为此目的而设计的。这是因为您必须将其存储在无法轻松搜索或过滤数据的平面文件中。相反,您应该查看用于存储数据的数据库。

    【讨论】:

    • 对象是如何存储在数据库中的?
    【解决方案3】:

    您可以将对象保存在数据库或共享首选项中

    1. 要在 DB 上兑现,您可以使用 Android Room (SQLite) 获取教程,您可以查看此 链接room tutorial

    2. 对于共享首选项缓存对象,您可以使用以下代码

      public void saveObhect(UserModel userModel) {
         Gson gson = new Gson();
         String json = gson.toJson(userModel);
         prefsEditor.putString("USERMODEL", json);
         prefsEditor.commit();
      }
      
      
      public UserModel getYourObjModel() {
         Gson gson = new Gson();
         String json = sharedPrefs.getString("USERMODEL", "");
         Your obj = gson.fromJson(json, UserModel.class);
         return obj;
      }
      

    【讨论】:

    • 如果要使用数据库,不妨使用@EntityUserModel中的字段直接映射到数据库表中的列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-29
    相关资源
    最近更新 更多