如何将 Firebase DataSnapshot 对象保存到共享首选项?

How to save Firebase DataSnapshot object to shared Preferences?

我正在尝试将 Firebase DataSnapshot 对象保存到 sharedpreferences。

请参阅 ,其中我设计了一种涉及执行此操作的方法。

...

到目前为止我尝试过的:

  1. 使用 Gson.Json method。结果:似乎不起作用...我不认为 DataSnapshot class 是“POJO”类型 class...至少不能与 gson 一起使用。

  2. 使用此方法:

    private static String toString(Serializable o) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream( baos ); oos.writeObject(o); oos.close(); return Base64.getEncoder().encodeToString(baos.toByteArray()); }

结果:不起作用...我不认为 DataSnapshot class 是 'Serializable'。

我想到了另一种方法 -- 只需将 DataSnapshot.toString() 保存到 Sharedpreferences 中...但是您如何再次将其取回?你不能这样做:

DataSnapshot snapshot = new DataSnapshot().fromString([string from sharedprefs])

欢迎任何帮助。

我遇到了同样的问题。我想将 Datasnapshot 保存在 SharedPreferences 中,我的 json 数据有点复杂。所以我写了下面的代码。

//保存到sharedpreference

 public void setAppLanguageDataSnapshot(DataSnapshot mDataSnapshot) {
    ObjectMapper mapper = new ObjectMapper();
    try {
        mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
        String json = mapper.writeValueAsString(mDataSnapshot.getValue());
        StorageUtils.getInstance(context).setString(AppConstants.SharedPrefConstants.APP_CONTENT, json);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }
   }

//获取数据作为JSON对象。

 String data = StorageUtils.getInstance(context).getString(AppConstants.SharedPrefConstants.APP_CONTENT);
    String value = "";
    if (!TextUtils.isEmpty(data)) {
        try {
            JSONObject jsonObject = new JSONObject(data);

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }