MalformedJSONException: неопределенный символ - PullRequest
0 голосов
/ 28 мая 2019

Я получаю следующий 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 для выполнения обеих операций.Может кто-нибудь сказать мне, что я делаю не так.

...