android - 来自服务器的数据未保存在共享首选项中

标签 android json sharedpreferences

我正在尝试将数据从服务器保存到共享首选项中。我成功地从服务器接收数据。但我只能在共享首选项中保存“名字”字段。我不明白为什么其他字段没有像“名字”那样保存。

这是 Json 响应:-

"driver_details":[{"id":"8","first_name":"john","Surname":"williams","unit_no":"2","street_name":"paris","Suburb":"Melbourne","State":"Victoria","post_code":"0","driving_lic":"12345","authority_id":"12345","mobile_no":"6348998575","Email":"john@gmail.com","password":"827ccb0eea8a706c4c34a16891f84e7b","date_of_creation":"2014-04-03 07:26:10","status":"0","login_token":"3cdLDObQhtFFoOVUX9MH","latitude":"","longitude":""}],"err-code":"0"}

存储共享首选项的代码:-
                 pref=getSharedPreferences("Users", MODE_WORLD_READABLE);
                    SharedPreferences.Editor edit=pref.edit();

                    edit.putString("mfname", mfname);
                    edit.putString("msname", msname);
                    edit.putString("mun", mun);
                    edit.putString("mstreet", mstreet);
                    edit.putString("msuburb", msuburb);
                    edit.putString("mpassword", mpassword);
                    edit.putString("mpostcode", mpostcode);
                    edit.putString("mlicense", mlicense);
                    edit.putString("mid", mid);
                    edit.putString("mmobile", mmobile);
                    edit.putString("memail", memail);
                    edit.putString("login_token", login_token);
                    edit.commit();

用户(数据):-
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <null name="mmobile" />
    <null name="memail" />
    <null name="msname" />
    <string name="mfname">Abc</string>
    <null name="mstreet" />
    <null name="mpostcode" />
    <null name="mlicense" />
    <null name="mid" />
    <null name="login_token" />
    <null name="mpassword" />
    <null name="mun" />
    <null name="msuburb" />
</map>

解析代码:-
            StringEntity se = new StringEntity(job.toString());

            HttpPost httppost = new HttpPost("http://abc/webservice.php");

            httppost.setEntity(se);

            HttpResponse response = httpclient.execute(httppost);
              String tmpString = EntityUtils.toString(response.getEntity());

                String data = tmpString.replace("yes","");  
            System.out.println("response "+data);


            JSONObject jo = new JSONObject(data);

            Log.d("response", jo.toString(4));

            JSONArray jArray = jo.getJSONArray("driver_details");  
            Log.d("Array", jArray.toString(4));


            for (int i=0; i < jArray.length(); i++)
            {
                System.out.println("please print my name...for....");
                try {
                JSONObject jsob = jArray.getJSONObject(i);

                        mfname = jsob.getString("first_name");
                        msname = jsob.getString("surname");
                        mun = jsob.getString("unit_no");
                        mstreet = jsob.getString("street_name");
                        msuburb = jsob.getString("suburb");
                        mstate = jsob.getString("state");
                        mpassword = jsob.getString("password");
                        mpostcode = jsob.getString("post_code");
                        mlicense = jsob.getString("driving_license");
                        mid = job.getString("authority_id");
                        mmobile = jsob.getString("mobile_no");
                        memail = jsob.getString("email");
                        login_token=jsob.getString("login_token");

                 } catch (JSONException e) {

                } 

最佳答案

这条线是罪魁祸首

msname = jsob.getString("surname");

JSON 姓氏大写 S "Surname"不是 "surname" .你可以试试optString()如果您不知道它是否包含 key 。别忘了打印 exception

关于android - 来自服务器的数据未保存在共享首选项中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23027309/

相关文章:

javascript - 如何从包含多个对象的 json 文件创建表?

c# - 如何在 c# 文件中的 <span> 标记内写入 JSON?

android - 将可绘制对象转换为字符串以传递给另一个 Activity

android - Spinner Android 中的半截文本

android - 预锁屏应用

java - Elasticsearch:如何在查询中使用聚合?

android - 如何在 Flutter SharedPreferences 中访问 iOS UserDefaults 存储的数据

android - 如何在Android TV中全屏使用AppCompatActivity?

java - 无法在 jsoup 中使用文档

android - SharedPreferences 和 PreferenceFragment