如何将Google Cloud端点响应持久保存到sharedPreference

时间:2014-03-20 20:45:44

标签: java android json google-app-engine google-eclipse-plugin

我正在开发一个appengine连接的android项目。我的一个端点方法返回一个集合

return CollectionResponse.<MyData> builder().setItems(result).build();

当数据到达android时,我想将数据保存到SharedPreferences。这是一个两步过程:

  1. 保留表示对sharedPreferences的响应的json
  2. 将json解组为CollectionResponseMyData或至少List<MyData>
  3. 有没有人这样做过,不介意分享怎么做?

    如果需要,澄清步骤1在数据到达时发生。第2步发生在需要数据的稍后时间。

1 个答案:

答案 0 :(得分:0)

您的数据是json,因此您可以使用gson转换为字符串并返回json。 您需要这样做,因为您无法在SharedPreference上保存json格式。

public boolean saveJson(List<MyData> myData){
    Gson gson = new Gson();
    String json = gson.toJson(myData);
    return saveMyData(json);
}

public List<MyData> getJson() {
    Type listOfObjects = new TypeToken<List<MyData>>(){}.getType();
    String json = restoreMyData();

    Gson gson = new Gson();
    List<MyData>  myListData = gson.fromJson(json, listOfObjects);
    return myListData;
}
public boolean saveMyData(String data) {
    SharedPreferences settings = context.getSharedPreferences("PrefName", 0);
    SharedPreferences.Editor editor = settings.edit();

    editor.putString("MyKey", data);
    return editor.commit();
}

public String restoreMyData() {
    SharedPreferences settings = context.getSharedPreferences("PrefName", 0);
    String data = settings.getString("MyKey", "default value, you can put null here");
    return data;
}