在 SharedPreferences 中保存模型 class 对象

Save Model class object in SharedPreferences

我是 android 开发的新手。我将用户个人资料信息保存在共享首选项中,这样每当我需要显示用户名、电子邮件或其他数据时,我就会从共享首选项中调用它,而不是一次又一次地从数据库中调用。我想保存并获取完整的配置文件,而不是获取单个字符串。以下是我使用的函数

public void save(String key, String value) {
    SharedPreferences.Editor editor
        = context.getSharedPreferences("data", context.MODE_PRIVATE).edit();
    editor.putString(key, value);
    editor.commit();
}

public String get(String key) {
    SharedPreferences sharedPreferences
        = context.getSharedPreferences("data", context.MODE_PRIVATE);
    return sharedPreferences.getString(key, "");
}

我想要的功能如下

public void save(String key, MyModel object) {
    SharedPreferences.Editor editor
        = context.getSharedPreferences("data", context.MODE_PRIVATE).edit();
    editor.putString(key, object);
    editor.commit();
}

但是共享首选项需要唯一的字符串来保存和获取。有没有可能的解决方案来保存其中的对象?或共享偏好的任何替代方案。 (不包括 SQLite 或其他复杂数据库)

您可以将您的对象转换为 Json,然后将其作为字符串保存在您的共享首选项中,如下面的代码所示:

public void save(String key, MyModel object) {
    String myObject = Gson().toJson(object);
    SharedPreferences.Editor editor
        = context.getSharedPreferences("data", context.MODE_PRIVATE).edit();
    editor.putString(key, myObject);
    editor.commit();
}

然后你可以像这样将它转换回对象:

public MyModel get(String key) {
    SharedPreferences sharedPreferences
        = context.getSharedPreferences("data", context.MODE_PRIVATE);
    String myObject = sharedPreferences.getString(key, "");
    return Gson().fromJson(myObject, MyModel.class);
}

这个要保存数据

public void saveData(String key, MyModel object) {
    save(key, new Gson().toJson(object));
}

本次获取数据

public MyModel getData(String key) {
    String data = get(key);
    return new Gson().fromJson(data, MyModel.class);
}

如何运作?

此保存方法将您的模型对象转换为 JSON 字符串,然后将字符串保存到共享首选项中,在 get 函数中也是如此。它以 JSON 字符串的形式获取数据,然后将其转换为您的对象和 returns 一个值。 为了保存和获取使用你自己的函数