从 SharedPreference 读取和解析 JSONArray 字符串时出错
Error while Reading and Parsing JSONArray String from SharedPreference
我已将 JSONArray
作为字符串存储在 SharedPreference
中。这是我的 JSONObject
JSONObject info = new JSONObject();
try {
info.put("name", full_name);
info.put("phone", foodie_contact);
info.put("no_people", no_peoples);
} catch (JSONException e) {
e.printStackTrace();
}
我将此对象存储在数组中,并将数组存储在 SharedPreference 中作为
JSONArray array=new JSONArray();
array.put(info.toString());
alert.noInternetAlert(getActivity());
edit=addqueuetemp.edit();
edit.putString("queuedata",array.toString());
edit.apply();
现在,我从 SharedPreference 获取 JSONArray 并将其解析为
try {
JSONArray array=new JSONArray(addqueuetemp.getString("queuedata","[]"));
for(int i=0;i<array.length();i++){
JSONObject obj=array.getJSONObject(i+1);
Log.i("OBJECT",obj.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
我从 Preference 读取后得到的字符串格式是
["{\"name\":\"payal\",\"phone\":\"7427427427\",\"no_people\":\"5\"}"]
我收到错误
Value {"name":"payal","phone":"7427427427","no_people":"5"} at 0 of type java.lang.String cannot be converted to JSONObject
如何解决这个问题?实际问题在哪里?
尝试更改
array.put(info.toString());
到
array.put(info);
因为你想在数组中保存对象,但实际上你在数组
中保存String
要将您的字符串转换为 json 数组,您需要使用以下代码。
JsonParser jsonParser = new JsonParser();
JSONArray jo = (JSONArray)jsonParser.parse(json);
您将 String
放入 JSONArray
,而不是 JSONObject
:
array.put(info.toString());
这就是为什么您只能将其作为 String
。
删除那个 .toString()
,它将起作用
我已将 JSONArray
作为字符串存储在 SharedPreference
中。这是我的 JSONObject
JSONObject info = new JSONObject();
try {
info.put("name", full_name);
info.put("phone", foodie_contact);
info.put("no_people", no_peoples);
} catch (JSONException e) {
e.printStackTrace();
}
我将此对象存储在数组中,并将数组存储在 SharedPreference 中作为
JSONArray array=new JSONArray();
array.put(info.toString());
alert.noInternetAlert(getActivity());
edit=addqueuetemp.edit();
edit.putString("queuedata",array.toString());
edit.apply();
现在,我从 SharedPreference 获取 JSONArray 并将其解析为
try {
JSONArray array=new JSONArray(addqueuetemp.getString("queuedata","[]"));
for(int i=0;i<array.length();i++){
JSONObject obj=array.getJSONObject(i+1);
Log.i("OBJECT",obj.toString());
}
} catch (JSONException e) {
e.printStackTrace();
}
我从 Preference 读取后得到的字符串格式是
["{\"name\":\"payal\",\"phone\":\"7427427427\",\"no_people\":\"5\"}"]
我收到错误
Value {"name":"payal","phone":"7427427427","no_people":"5"} at 0 of type java.lang.String cannot be converted to JSONObject
如何解决这个问题?实际问题在哪里?
尝试更改
array.put(info.toString());
到
array.put(info);
因为你想在数组中保存对象,但实际上你在数组
中保存String
要将您的字符串转换为 json 数组,您需要使用以下代码。
JsonParser jsonParser = new JsonParser();
JSONArray jo = (JSONArray)jsonParser.parse(json);
您将 String
放入 JSONArray
,而不是 JSONObject
:
array.put(info.toString());
这就是为什么您只能将其作为 String
。
删除那个 .toString()
,它将起作用