如何将 Firebase DataSnapshot 对象保存到共享首选项?
How to save Firebase DataSnapshot object to shared Preferences?
我正在尝试将 Firebase DataSnapshot 对象保存到 sharedpreferences。
请参阅 ,其中我设计了一种涉及执行此操作的方法。
...
到目前为止我尝试过的:
使用 Gson.Json method。结果:似乎不起作用...我不认为 DataSnapshot class 是“POJO”类型 class...至少不能与 gson 一起使用。
使用此方法:
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();
}
}
我正在尝试将 Firebase DataSnapshot 对象保存到 sharedpreferences。
请参阅
...
到目前为止我尝试过的:
使用 Gson.Json method。结果:似乎不起作用...我不认为 DataSnapshot class 是“POJO”类型 class...至少不能与 gson 一起使用。
使用此方法:
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();
}
}