将json响应数组存储到会话中

时间:2016-10-20 02:41:11

标签: java android json

我的LoginActivity正在向URL发送用户名和密码并获得成功状态。我想在会话中存储json响应,如userid,名称,电子邮件信息,并在MainActivity中检索它。我正在使用以下代码进行json响应。

JSONObject jObj = new JSONObject(response);
String userId = jObj.getString("user_id");

我的回答是

{"tag":"login",
 "error":false,
 "user_id":"5",
     "user":{"name":"Chandra shankar",
             "email":"chandra@gmail.com"
            }
}
下面的

是Session.java中的SharedPreferences

public class Session {
    private SharedPreferences sp;
    private SharedPreferences.Editor spEditor;


    public Session(Context context) {
        sp = PreferenceManager.getDefaultSharedPreferences(context);

    }


    public boolean setLogin(boolean status) {
        spEditor = sp.edit();
        spEditor.putBoolean("is_logged_in", status);
        spEditor.commit();
        return true;
    }

    public boolean getLoggedIn() {
        return sp.getBoolean("is_logged_in", false);
    }

}

2 个答案:

答案 0 :(得分:1)

使用SharedPreferences

SharedPreferences preferences = this.getSharedPreferences("APP_NAME", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();

editor.putString("ID", userId).apply();

如果你想重新获得价值。

String id = preferences.getString("ID");

EDIT

public class Session {
    private SharedPreferences sp;
    private SharedPreferences.Editor spEditor;
    private String ISLOGIN = "is_logged_in";
    private String USER_ID = "user_id";

    public Session(Context context) {
        sp = PreferenceManager.getDefaultSharedPreferences(context);

    }


    public boolean setLogin(boolean status) {
        spEditor = sp.edit();
        spEditor.putBoolean(ISLOGIN, status);
        //use apply for async process
        spEditor.apply();
        return status;
    }

    public boolean getLoggedIn() {
        return sp.getBoolean(ISLOGIN, false);
    }

    public void setUserId(String userid){
        sp.edit().putString(USER_ID,userid).apply();
    }


    //get user id
    public String getUserId(){
       return sp.getString(USER_ID);
    }

}

//活动

Session session = new Session(this);
String id = session.getUserId();

p / s:我建议你使用这个TinyDB SharedPreferences

答案 1 :(得分:0)

所以,实际上你需要两个步骤。您需要解析响应,然后需要保存它。

要解析json响应,可以构建一个POJO类。 GSON对此有所帮助。您也可以按this链接解析回复。

然后,您可以将数据保存到Shared Preference / Sqlite / Local Variables / Files或任何其他位置,并根据您的需要使用保存的值。