Я получаю следующий JSON-ответ от сервера:
{
"addon_categories": [
{
"addon_category_1_options": [
{
"addon_category_1_option_1_price": "2",
"addon_category_1_option_1_ischecked": "no",
"addon_category_1_option_1_title": "Extra"
},
{
"addon_category_1_option_2_ischecked": "yes",
"addon_category_1_option_2_price": "3",
"addon_category_1_option_2_title": "Double"
}
],
"addon_category_1_type": "single",
"addon_category_1_title": "Cheese"
},
{
"addon_category_2_type": "multiple",
"addon_category_2_options": [
{
"addon_category_2_option_1_ischecked": "yes",
"addon_category_2_option_1_price": "0.5",
"addon_category_2_option_1_title": "Extra Capsicum"
},
{
"addon_category_2_option_2_title": "Extra Olives",
"addon_category_2_option_2_ischecked": "no",
"addon_category_2_option_2_price": "0.5"
}
],
"addon_category_2_title": "Others"
}
]
}
Затем я сохраняю его в настройках следующим образом:
TypeToken<ArrayList<HashMap<String, Object>>> token = new TypeToken<ArrayList<HashMap<String, Object>>>() {
};
String arrayString = new Gson().toJson(finalArray, token.getType());
arrayString = arrayString.replace('=',':');
Log.e("Printing final", arrayString);
preferenceUtils.setAddOns(addon_id, arrayString);
Затем я снова получаю к нему доступ:
TypeToken<ArrayList<HashMap<String, Object>>> token = new TypeToken<ArrayList<HashMap<String, Object>>>() {
};
ArrayList finalArray = new Gson().fromJson(addons, token.getType());
HashMap dict1 = (HashMap) finalArray.get(0);
addOnsArray = (ArrayList<Object>) dict1.get("addon_categories");
Log.e("final", addOnsArray.toString());
Я получаю "addonsArray", однако, когда я зацикливаюсь на этом коде, я получаю ошибку:
for (int k = 0; k < addOnsArray.size(); k++) {
HashMap<String, Object> addOn;
if (addOnsArray.get(k) instanceof HashMap) {
addOn = (HashMap<String, Object>) addOnsArray.get(k);
} else {
Gson gson = new Gson();
String json = (addOnsArray.get(k)).toString();
json = json.replace("=", ":");
Log.e("Replace", json);
TypeToken<HashMap<String, Object>> token = new TypeToken<HashMap<String, Object>>() {
};
addOn = gson.fromJson(json.trim(), token.getType());
}
Однако я не получаю ошибку в первый раз,Я получаю эту ошибку, когда цикл снова запускается второй.Итак, неопределенная ошибка в "addon_category_2_option_1_title".
Я использовал GSON для выполнения обеих операций.Может кто-нибудь сказать мне, что я делаю не так.