Android 来自服务器的数据未保存在共享首选项中
我正在尝试将服务器中的数据保存到共享首选项中。我正在成功地从服务器接收数据。但我只能在共享首选项中保存名字字段。我不明白为什么其他字段没有像名字一样保存 以下是Json响应:-Android 来自服务器的数据未保存在共享首选项中,android,json,sharedpreferences,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",
"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姓氏not姓氏。如果不知道optString是否包含密钥,可以尝试使用它。别忘了打印异常这一行是罪魁祸首
msname = jsob.getString("surname");
JSON有大写的姓氏S姓氏not姓氏。如果不知道optString是否包含密钥,可以尝试使用它。别忘了打印异常您将获得memail、mmobile、msname等的空值
在存储到SharedReference之前,请尝试打印日志中的所有值。memail、mmobile、msname等的值为空
在存储到SharedReference之前,请尝试打印日志中的所有值。能否共享解析代码?能否在JSONException中添加e.printstacktrace。因为主要是因为无效的json问题。你能分享解析代码吗?你能在你的JSONException中添加e.printstacktrace吗。因为这主要是因为无效的json问题。json有Suburd,而不是suburdExact,但此行抛出异常,因此不会执行其他行。json有Suburd,而不是suburdExact,但此行抛出异常,因此不会执行其他行。