如何从JSON设置数据?

时间:2016-01-25 07:47:07

标签: java php android json

我是Android JSON编程的新手。我想在这个程序中使用set和get函数,但是当我使用get()for full_name时,得到null。

public class LoginActivity extends FragmentActivity {

    private EditText userName;
    private EditText password;
    private TextView forgotPassword;
    private TextView backToHome;
    private Button login;
    private CallbackManager callbackManager;
    private ReferanceWapper referanceWapper;
    Context context;
    String regid;
    GoogleCloudMessaging gcm;
    String SENDER_ID = "918285686540";

    public static final String PROPERTY_REG_ID = "registration_id";
    private static final String PROPERTY_APP_VERSION = "appVersion";
    private final static int PLAY_SERVICES_RESOLUTION_REQUEST = 9000;
    static final String TAG = "GCM";


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        Utility.setStatusBarColor(this, R.color.tranparentColor);
        Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/OpenSans_Regular.ttf");

        userName = (EditText) findViewById(R.id.userName);
        userName.setTypeface(tf);
        userName.setFocusable(false);
        userName.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View view, MotionEvent paramMotionEvent) {
                userName.setFocusableInTouchMode(true);
                return false;
            }
        });

        password = (EditText) findViewById(R.id.passwordEText);
        password.setTypeface(tf);
        password.setFocusable(false);
        password.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View paramView, MotionEvent paramMotionEvent) {
                password.setFocusableInTouchMode(true);
                return false;
            }
        });

        forgotPassword = (TextView) findViewById(R.id.forgotPassword);
        forgotPassword.setTypeface(tf);
        forgotPassword.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(),ForgotPasswordActivity.class);
                startActivity(intent);
            }
        });

        backToHome = (TextView) findViewById(R.id.fromLogToHome);
        backToHome.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
        login = (Button) findViewById(R.id.loginBtn);

        login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                doLoginTask();
                //  Intent intent = new Intent(getApplicationContext(), AfterLoginActivity.class);
                //  startActivity(intent);

            }
        });
    }


    private void doLoginTask() {

        String strEmail = userName.getText().toString();
        String strPassword = password.getText().toString();
        if (strEmail.length() == 0) {
            userName.setError("Email Not Valid");
        } else if (!Utility.isEmailValid(strEmail.trim())) {
            userName.setError("Email Not Valid");
        } else if (strPassword.length() == 0) {
            password.setError(getString(R.string.password_empty));
        } else {

            JSONObject jsonObject = null;
            try {
                jsonObject = new JSONObject();
                jsonObject.putOpt(Constants.USER_NAME, strEmail);
                jsonObject.putOpt(Constants.USER_PASSWORD, strPassword);
                jsonObject.putOpt(Constants.DEVICE_TOKEN, "11");
                jsonObject.putOpt(Constants.MAC_ADDRESS, "111");
                jsonObject.putOpt(Constants.GPS_LATITUDE, "1111");
                jsonObject.putOpt(Constants.GPS_LONGITUDE, "11111");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            final ProgressDialog pDialog = new ProgressDialog(this);
            pDialog.setMessage("Loading...");
            pDialog.show();

            CustomJSONObjectRequest jsonObjectRequest = new CustomJSONObjectRequest(Request.Method.POST, Constants.USER_LOGIN_URL, jsonObject, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    pDialog.dismiss();
                    Log.e("LoginPage", "OnResponse =" + response.toString());
                    getLogin(response);
                    //LoginBean lb = new LoginBean();
                    //Toast.makeText(getApplicationContext(),lb.getFull_name()+"Login Successfuly",Toast.LENGTH_LONG).show();
                    Intent intent = new Intent(getApplicationContext(),AfterLoginActivity.class);
                    startActivity(intent);
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Toast.makeText(getApplicationContext(),"Something, wrong please try again",Toast.LENGTH_LONG).show();
                    pDialog.dismiss();

                }
            });
            jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(
                    5000,
                    DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                    DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
            Log.e("LoginPage", "Url= " + Constants.USER_LOGIN_URL + " PostObject = " + jsonObject.toString());
            AppController.getInstance().addToRequestQueue(jsonObjectRequest);
        }

    }

    private void getLogin(JSONObject response) {
        if (response != null){
            try {
                JSONObject jsonObject = response.getJSONObject("data");
                LoginBean loginBean = new LoginBean();
                loginBean.setUser_id(jsonObject.getString("user_id"));
                loginBean.setFull_name(jsonObject.getString("full_name"));
                loginBean.setDisplay_name(jsonObject.getString("display_name"));
                loginBean.setUser_image(jsonObject.getString("user_image"));
                loginBean.setGender(jsonObject.getString("gender"));
                loginBean.setAuthorization_key(jsonObject.getString("authorization_key"));

                //  signUpArrayList.add(signUpBean);

            } catch (JSONException e) {
                e.printStackTrace();
            }
            // dataBean.setSignUp(signUpArrayList);
        }
        LoginBean loginBean = new LoginBean();
        Toast.makeText(getApplicationContext(),"Hello"+loginBean.getFull_name(),Toast.LENGTH_LONG).show();

    }


    public void onBackPressed() {
        finish();
    }

}

JSON输入:

"{
""user_name"":""ashish@soms.in"",
""user_password"":""123456"",
""device_token"":""1111"",
""mac_address"":""1111"",
""gps_latitude"":""1111"",
""gps_longitude"":""1111""
}"

这是JSON响应:

{
    ""data"": {
        ""user_id"": ""90"",
        ""full_name"": ""ashish"",
        ""display_name"": ""ashish"",
        ""user_image"": ""images/noimage.png"",
        ""gender"": ""0"",
        ""authorization_key"": ""4eef1d65f7b470dbca881fe6452ec11457f54489""
    }
}

1 个答案:

答案 0 :(得分:1)

请注释行LoginBean loginBean = new LoginBean();然后尝试。

试试这段代码

private void getLogin(JSONObject response) {
     LoginBean loginBean=null;
    if (response != null){
        try {
            loginBean = new LoginBean();
            JSONObject jsonObject = response.getJSONObject("data");
            loginBean.setUser_id(jsonObject.getString("user_id"));
            loginBean.setFull_name(jsonObject.getString("full_name"));
            loginBean.setDisplay_name(jsonObject.getString("display_name"));
            loginBean.setUser_image(jsonObject.getString("user_image"));
            loginBean.setGender(jsonObject.getString("gender"));
            loginBean.setAuthorization_key(jsonObject.getString("authorization_key"));

            //  signUpArrayList.add(signUpBean);

        } catch (JSONException e) {
            e.printStackTrace();
        }
        // dataBean.setSignUp(signUpArrayList);
    }
    Toast.makeText(getApplicationContext(),"Hello"+loginBean.getFull_name(),Toast.LENGTH_LONG).show();

}