从空的 sharedpreference 中检索 json 数组时,java.lang.String 无法转换为 JSONObject 异常出现
When retrieving json array from empty sharedpreference, java.lang.String cannot be converted to JSONObject exception comes
W/System.err: org.json.JSONException: Value Responsemodel$Banner@b494bac at 0 of type java.lang.String cannot be converted to JSONObject
输出:
[Responsemodel$Banner@e5af3c3, Responsemodel$Banner@ed16440, Responsemodel$Banner@5335f79, Responsemodel$Banner@e8cb4be, Responsemodel$Banner@9ef091f]
从 SharedPreferences 获取
String getbanner = preferences.getString(Constants.banner_list, null);
Log.i("banner_str", getbanner);
if (getbanner != null) {
JSONArray jsonArray2 = new JSONArray(getbanner);
Log.i("Sharedpref1", jsonArray2.toString());
if (banner_list != null) {
banner_list.clear();
Log.i("Sharedpref2", jsonArray2.toString());
for (int x = 0; x < jsonArray2.length(); x++) {
String object = jsonArray2.getJSONObject(x).getString("imgUrl");
Log.i("bid", object);
HashMap<String, String> map = new HashMap<>();
map.put("imgUrl", object);
banner_list.add(map);
}
}
}
} catch (NullPointerException | JSONException e1) {
e1.printStackTrace();
}
Banner_adapter adapter1 = new Banner_adapter(banner_list);
snapHelper.attachToRecyclerView(recyclerView);
recyclerView.setAdapter(adapter1);
adapter1.notifyDataSetChanged();
保存在 SharedPreferences
getbalres_dto model = response.body(); SharedPreferences.Editor editor = preferences.edit();
editor.putString(Constants.currentBalance, model.getMOBILEAPPLICATION().getCurrentBalance())
.putString(Constants.outletName, model.getMOBILEAPPLICATION().getOutletName())
.putString(Constants.name, model.getMOBILEAPPLICATION().getName())
.putString(Constants.news, model.getMOBILEAPPLICATION().getNews())
.putString(Constants.banner_list, model.getMOBILEAPPLICATION().getBanner().toString())
.putString(Constants.instaurl, model.getMOBILEAPPLICATION().getInstagramUrl())
.putString(Constants.fburl, model.getMOBILEAPPLICATION().getFacebookUrl())
.putString(Constants.youtubeurl, model.getMOBILEAPPLICATION().getYoutubeUrl())
.putString(Constants.twitterurl, model.getMOBILEAPPLICATION().getTwitterUrl())
.putString(Constants.aepsBalance, model.getMOBILEAPPLICATION().getAepsBalance())
.putString(Constants.cartItem, model.getMOBILEAPPLICATION().getCartItem())
.commit();
Java PoJO class
public class getbalres_dto {
@SerializedName("MOBILE_APPLICATION")
@Expose
private MOBILEAPPLICATION mOBILEAPPLICATION;
public MOBILEAPPLICATION getMOBILEAPPLICATION() {
return mOBILEAPPLICATION;
}
public void setMOBILEAPPLICATION(MOBILEAPPLICATION mOBILEAPPLICATION) {
this.mOBILEAPPLICATION = mOBILEAPPLICATION;
}
public class MOBILEAPPLICATION {
@SerializedName("response")
@Expose
private String response;
@SerializedName("Message")
@Expose
private String message;
@SerializedName("news")
@Expose
private String news;
@SerializedName("banner")
@Expose
private JsonArray banner;
@SerializedName("name")
@Expose
private String name;
@SerializedName("outletName")
@Expose
private String outletName;
@SerializedName("currentBalance")
@Expose
private String currentBalance;
@SerializedName("aepsBalance")
@Expose
private String aepsBalance;
@SerializedName("activationAmount")
@Expose
private String activationAmount;
@SerializedName("transactionAmount")
@Expose
private String transactionAmount;
@SerializedName("totalAmount")
@Expose
private String totalAmount;
@SerializedName("isPaid")
@Expose
private String isPaid;
@SerializedName("rentalType")
@Expose
private String rentalType;
@SerializedName("instagramUrl")
@Expose
private String instagramUrl;
@SerializedName("twitterUrl")
@Expose
private String twitterUrl;
@SerializedName("facebookUrl")
@Expose
private String facebookUrl;
@SerializedName("youtubeUrl")
@Expose
private String youtubeUrl;
@SerializedName("cartItem")
@Expose
private String cartItem;
public String getAepsBalance() {
return aepsBalance;
}
public void setAepsBalance(String aepsBalance) {
this.aepsBalance = aepsBalance;
}
public String getInstagramUrl() {
return instagramUrl;
}
public void setInstagramUrl(String instagramUrl) {
this.instagramUrl = instagramUrl;
}
public String getTwitterUrl() {
return twitterUrl;
}
public void setTwitterUrl(String twitterUrl) {
this.twitterUrl = twitterUrl;
}
public String getFacebookUrl() {
return facebookUrl;
}
public void setFacebookUrl(String facebookUrl) {
this.facebookUrl = facebookUrl;
}
public String getYoutubeUrl() {
return youtubeUrl;
}
public void setYoutubeUrl(String youtubeUrl) {
this.youtubeUrl = youtubeUrl;
}
public String getRentalType() {
return rentalType;
}
public void setRentalType(String rentalType) {
this.rentalType = rentalType;
}
public String getIsPaid() {
return isPaid;
}
public void setIsPaid(String isPaid) {
this.isPaid = isPaid;
}
public String getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(String totalAmount) {
this.totalAmount = totalAmount;
}
public String getTransactionAmount() {
return transactionAmount;
}
public void setTransactionAmount(String transactionAmount) {
this.transactionAmount = transactionAmount;
}
public String getActivationAmount() {
return activationAmount;
}
public void setActivationAmount(String activationAmount) {
this.activationAmount = activationAmount;
}
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getNews() {
return news;
}
public void setNews(String news) {
this.news = news;
}
public JsonArray getBanner() {
return banner;
}
public void setBanner(JsonArray banner) {
this.banner = banner;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOutletName() {
return outletName;
}
public void setOutletName(String outletName) {
this.outletName = outletName;
}
public String getCartItem() {
return cartItem;
}
public void setCartItem(String cartItem) {
this.cartItem = cartItem;
}
public String getCurrentBalance() {
return currentBalance;
}
public void setCurrentBalance(String currentBalance) {
this.currentBalance = currentBalance;
}
}}
Getting From SharedPreference
String getbanner = preferences.getString(Constants.banner_list, null);
Gson gson = new Gson();
Log.i("bannerdata__", getbanner);
try {
if (getbanner.isEmpty() || getbanner==null || getbanner.equalsIgnoreCase(null)) {
Log.i("bannerdata__", "empty......");
} else {
Type type = new TypeToken<List<String>>() {
}.getType();
List<String> data = gson.fromJson(getbanner, type);
for (String imgstr : data) {
Log.i("bannerdata_2", imgstr);
HashMap<String, String> map = new HashMap<>();
map.put("imgUrl", imgstr);
banner_list.add(map);
}
Banner_adapter adapter1 = new Banner_adapter(banner_list);
snapHelper.attachToRecyclerView(recyclerView);
recyclerView.setAdapter(adapter1);
adapter1.notifyDataSetChanged();
}
} catch (Exception e) {
e.printStackTrace();
}
Add data in SharedPreference
final ArrayList<String> arrPackage = new ArrayList<>();
try {
JSONArray jsonArray2 = new JSONArray(getbalmodel.getMOBILEAPPLICATION().getBanner().toString());
if (banner_list != null) {
banner_list.clear();
}
for (int x = 0; x < jsonArray2.length(); x++) {
String bid = jsonArray2.getJSONObject(x).getString("imgUrl");
arrPackage.add(bid);
Gson gson = new Gson();
String json = gson.toJson(arrPackage);
editor.putString(Constants.banner_list, json);
Log.i("imageurl", bid);
HashMap<String, String> map = new HashMap<>();
map.put("imgUrl", bid);
banner_list.add(map);
}
editor.commit();
} catch (JSONException | NullPointerException e1) {
e1.printStackTrace();
}
W/System.err: org.json.JSONException: Value Responsemodel$Banner@b494bac at 0 of type java.lang.String cannot be converted to JSONObject
输出:
[Responsemodel$Banner@e5af3c3, Responsemodel$Banner@ed16440, Responsemodel$Banner@5335f79, Responsemodel$Banner@e8cb4be, Responsemodel$Banner@9ef091f]
从 SharedPreferences 获取
String getbanner = preferences.getString(Constants.banner_list, null);
Log.i("banner_str", getbanner);
if (getbanner != null) {
JSONArray jsonArray2 = new JSONArray(getbanner);
Log.i("Sharedpref1", jsonArray2.toString());
if (banner_list != null) {
banner_list.clear();
Log.i("Sharedpref2", jsonArray2.toString());
for (int x = 0; x < jsonArray2.length(); x++) {
String object = jsonArray2.getJSONObject(x).getString("imgUrl");
Log.i("bid", object);
HashMap<String, String> map = new HashMap<>();
map.put("imgUrl", object);
banner_list.add(map);
}
}
}
} catch (NullPointerException | JSONException e1) {
e1.printStackTrace();
}
Banner_adapter adapter1 = new Banner_adapter(banner_list);
snapHelper.attachToRecyclerView(recyclerView);
recyclerView.setAdapter(adapter1);
adapter1.notifyDataSetChanged();
保存在 SharedPreferences
getbalres_dto model = response.body(); SharedPreferences.Editor editor = preferences.edit();
editor.putString(Constants.currentBalance, model.getMOBILEAPPLICATION().getCurrentBalance())
.putString(Constants.outletName, model.getMOBILEAPPLICATION().getOutletName())
.putString(Constants.name, model.getMOBILEAPPLICATION().getName())
.putString(Constants.news, model.getMOBILEAPPLICATION().getNews())
.putString(Constants.banner_list, model.getMOBILEAPPLICATION().getBanner().toString())
.putString(Constants.instaurl, model.getMOBILEAPPLICATION().getInstagramUrl())
.putString(Constants.fburl, model.getMOBILEAPPLICATION().getFacebookUrl())
.putString(Constants.youtubeurl, model.getMOBILEAPPLICATION().getYoutubeUrl())
.putString(Constants.twitterurl, model.getMOBILEAPPLICATION().getTwitterUrl())
.putString(Constants.aepsBalance, model.getMOBILEAPPLICATION().getAepsBalance())
.putString(Constants.cartItem, model.getMOBILEAPPLICATION().getCartItem())
.commit();
Java PoJO class
public class getbalres_dto {
@SerializedName("MOBILE_APPLICATION")
@Expose
private MOBILEAPPLICATION mOBILEAPPLICATION;
public MOBILEAPPLICATION getMOBILEAPPLICATION() {
return mOBILEAPPLICATION;
}
public void setMOBILEAPPLICATION(MOBILEAPPLICATION mOBILEAPPLICATION) {
this.mOBILEAPPLICATION = mOBILEAPPLICATION;
}
public class MOBILEAPPLICATION {
@SerializedName("response")
@Expose
private String response;
@SerializedName("Message")
@Expose
private String message;
@SerializedName("news")
@Expose
private String news;
@SerializedName("banner")
@Expose
private JsonArray banner;
@SerializedName("name")
@Expose
private String name;
@SerializedName("outletName")
@Expose
private String outletName;
@SerializedName("currentBalance")
@Expose
private String currentBalance;
@SerializedName("aepsBalance")
@Expose
private String aepsBalance;
@SerializedName("activationAmount")
@Expose
private String activationAmount;
@SerializedName("transactionAmount")
@Expose
private String transactionAmount;
@SerializedName("totalAmount")
@Expose
private String totalAmount;
@SerializedName("isPaid")
@Expose
private String isPaid;
@SerializedName("rentalType")
@Expose
private String rentalType;
@SerializedName("instagramUrl")
@Expose
private String instagramUrl;
@SerializedName("twitterUrl")
@Expose
private String twitterUrl;
@SerializedName("facebookUrl")
@Expose
private String facebookUrl;
@SerializedName("youtubeUrl")
@Expose
private String youtubeUrl;
@SerializedName("cartItem")
@Expose
private String cartItem;
public String getAepsBalance() {
return aepsBalance;
}
public void setAepsBalance(String aepsBalance) {
this.aepsBalance = aepsBalance;
}
public String getInstagramUrl() {
return instagramUrl;
}
public void setInstagramUrl(String instagramUrl) {
this.instagramUrl = instagramUrl;
}
public String getTwitterUrl() {
return twitterUrl;
}
public void setTwitterUrl(String twitterUrl) {
this.twitterUrl = twitterUrl;
}
public String getFacebookUrl() {
return facebookUrl;
}
public void setFacebookUrl(String facebookUrl) {
this.facebookUrl = facebookUrl;
}
public String getYoutubeUrl() {
return youtubeUrl;
}
public void setYoutubeUrl(String youtubeUrl) {
this.youtubeUrl = youtubeUrl;
}
public String getRentalType() {
return rentalType;
}
public void setRentalType(String rentalType) {
this.rentalType = rentalType;
}
public String getIsPaid() {
return isPaid;
}
public void setIsPaid(String isPaid) {
this.isPaid = isPaid;
}
public String getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(String totalAmount) {
this.totalAmount = totalAmount;
}
public String getTransactionAmount() {
return transactionAmount;
}
public void setTransactionAmount(String transactionAmount) {
this.transactionAmount = transactionAmount;
}
public String getActivationAmount() {
return activationAmount;
}
public void setActivationAmount(String activationAmount) {
this.activationAmount = activationAmount;
}
public String getResponse() {
return response;
}
public void setResponse(String response) {
this.response = response;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getNews() {
return news;
}
public void setNews(String news) {
this.news = news;
}
public JsonArray getBanner() {
return banner;
}
public void setBanner(JsonArray banner) {
this.banner = banner;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOutletName() {
return outletName;
}
public void setOutletName(String outletName) {
this.outletName = outletName;
}
public String getCartItem() {
return cartItem;
}
public void setCartItem(String cartItem) {
this.cartItem = cartItem;
}
public String getCurrentBalance() {
return currentBalance;
}
public void setCurrentBalance(String currentBalance) {
this.currentBalance = currentBalance;
}
}}
Getting From SharedPreference
String getbanner = preferences.getString(Constants.banner_list, null);
Gson gson = new Gson();
Log.i("bannerdata__", getbanner);
try {
if (getbanner.isEmpty() || getbanner==null || getbanner.equalsIgnoreCase(null)) {
Log.i("bannerdata__", "empty......");
} else {
Type type = new TypeToken<List<String>>() {
}.getType();
List<String> data = gson.fromJson(getbanner, type);
for (String imgstr : data) {
Log.i("bannerdata_2", imgstr);
HashMap<String, String> map = new HashMap<>();
map.put("imgUrl", imgstr);
banner_list.add(map);
}
Banner_adapter adapter1 = new Banner_adapter(banner_list);
snapHelper.attachToRecyclerView(recyclerView);
recyclerView.setAdapter(adapter1);
adapter1.notifyDataSetChanged();
}
} catch (Exception e) {
e.printStackTrace();
}
Add data in SharedPreference
final ArrayList<String> arrPackage = new ArrayList<>();
try {
JSONArray jsonArray2 = new JSONArray(getbalmodel.getMOBILEAPPLICATION().getBanner().toString());
if (banner_list != null) {
banner_list.clear();
}
for (int x = 0; x < jsonArray2.length(); x++) {
String bid = jsonArray2.getJSONObject(x).getString("imgUrl");
arrPackage.add(bid);
Gson gson = new Gson();
String json = gson.toJson(arrPackage);
editor.putString(Constants.banner_list, json);
Log.i("imageurl", bid);
HashMap<String, String> map = new HashMap<>();
map.put("imgUrl", bid);
banner_list.add(map);
}
editor.commit();
} catch (JSONException | NullPointerException e1) {
e1.printStackTrace();
}