获得Json职位的正确方法

时间:2016-06-26 17:25:00

标签: android json

登录后,我从网络服务器获得此回复..

{"success":" Bem vindo lu@lu.com"}{"nomeusuario":"Lu Zimermann"}{"enderecousuario":"Rua Pedro Alves 270. Centro. Casa."}{"telefoneusuario":"(42) 3623-8052"}

确定。现在我的android代码。

loginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            request = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        if(jsonObject.names().get(0).equals("success")){
                            Toast.makeText(getApplicationContext(),jsonObject.getString("success"),Toast.LENGTH_SHORT).show();
                          //startActivity(new Intent(getApplicationContext(),Restaurantes.class));
                        }else {
                            Toast.makeText(getApplicationContext(), jsonObject.getString("error"), Toast.LENGTH_SHORT).show();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                }

此代码Toast以下消息。 &#34; Bem vindo lu@lu.com"

我想要的是: 如何获取其他信息并将其传递给String。

电子邮件=&#34; lu@lu.com"

Endereco =&#34; Rua Pedro ......&#34;

姓名=&#34; Lu Zimermann&#34;

我可以稍后在应用程序上使用它。

感谢。

4 个答案:

答案 0 :(得分:0)

要访问其他键,您可以使用get(key)对象上的jsonObject。以下是您需要进行的代码更改:

     try {
            JSONObject jsonObject = new JSONObject(response);
            if(jsonObject.names().get(0).equals("success")){
                Toast.makeText(getApplicationContext(),jsonObject.getString("success"),Toast.LENGTH_SHORT).show();
                {"success":" Bem vindo lu@lu.com"}{"nomeusuario":"Lu Zimermann"}{"enderecousuario":"Rua Pedro Alves 270. Centro. Casa."}{"telefoneusuario":"(42) 3623-8052"}
                //here I am just getting the other properties/keys
                String nomeusuario = jsonObject.getString("nomeusuario");
                String enderecousuario = jsonObject.getString("enderecousuario");
                String telefoneusuario = jsonObject.getString("telefoneusuario");

                //here you could do whatever you like - I am just making a Toast as an example:
                Toast.makeText(getApplicationContext(), nomeusuario+ ", "+enderecousuario+ ", "+telefoneusuario ,Toast.LENGTH_LONG).show();

            }else {
                Toast.makeText(getApplicationContext(), jsonObject.getString("error"), Toast.LENGTH_SHORT).show();
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

我希望这可以帮到你 - 尝试一下让我知道。 顺便说一下,我假设你得到的JSON是正确的。

答案 1 :(得分:0)

有几种方法可以做到这一点。

首先,您需要将它们存储到变量/ s中。 您可以选择将其保存为JSON var,作为HashMap或将每个变量分隔为String。

第二个动作是从任何地方访问它。这取决于您希望信息存活多久。 如果你希望它们只在应用程序存在的情况下生存,那么我建议使用变量的set / get创建一个Global Java类。 您也可以将它存储在SharedPreferences或sqlite数据库中以永久保存。

答案 2 :(得分:0)

现在响应是您可以执行此操作以保存数据的正确方法。 首先是一个优先考虑的燃烧课程

<强> SharedPreferenceCustom

public class SharedPreferenceCustom {
    private Context mContext;
    private String defValue = "";

    public SharedPreferenceCustom(Context context) {
        this.mContext = context;
    }

    public void setSharedPref(String inputKey, Object inputValue) {
        final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(inputKey, String.valueOf(inputValue));
        editor.apply();

    }

    public String getSharedPref(String inputKey) {
        SharedPreferences sharedPreferences =  PreferenceManager.getDefaultSharedPreferences(mContext);
        return sharedPreferences.getString(inputKey, defValue);
    }
}

现在用于保存数据,在活动中

 try {
    JSONObject response = new JSONObject(new String(response_from_server))
    SharedPreferenceCustom sp = new SharedPreferenceCustom(Activity.this); 
    sp.setSharedPref("key_1", response.getString("nomeusuario"));   // use key as per needed   
    sp.setSharedPref("key_2", response.getString("enderecousuario"));
    sp.setSharedPref("key_3", response.getString("telefoneusuario"));
    sp.setSharedPref("key_4", response.getString("success"));  
 } catch (JSONException e) {
    e.printStackTrace();
 }

要获取数据通话sp.getSharedPref("key");,请传递获取相应数据的密钥

编辑:您还可以在SharedPreferenceCustion中编写单独的函数来存储不同的数据类型,或者您可以使用它,但它可能会为某些数据类型创建一些冲突,

希望这会有所帮助:):)

答案 3 :(得分:0)

尝试以下

loginButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            request = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        if(jsonObject.names().get(0).equals("success")){
                            //Toast.makeText(getApplicationContext(),jsonObject.getString("success"),Toast.LENGTH_SHORT).show();
                            JSONObject jsonObject = new JSONObject(response);
                            Iterator<String> keys = jsonObject.keys();
                            String values = "";
                            while(keys.hasNext()){
                                String keyName = keys.next();
                                values = jsonObject.getString(keyName) + "\n";
                            }
                            Toast.makeText(getApplicationContext(),values,Toast.LENGTH_SHORT).show();                           
                          //startActivity(new Intent(getApplicationContext(),Restaurantes.class));
                        }else {
                            Toast.makeText(getApplicationContext(), jsonObject.getString("error"), Toast.LENGTH_SHORT).show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                }