Конвертировать ArrayList из HashMaps в GSON JsonArray - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь преобразовать следующий Arraylist из HashMaps в JsonArray, чтобы я мог добавить его в свой JsonObject.

Я создал три хеш-карты, которые содержат пару значений, а затем каждый из них добавляется в ArrayList, который должен быть преобразован в JsonArray, чтобы он мог быть принят в GSON JsonObject.

Я попытался преобразовать его в строку, которая не давала мне предпочтительный вывод. Также безуспешно пытался преобразовать эту строку обратно в JsonArray.

     HashMap<String, String> chemo = new HashMap<>();
     HashMap<String, String> cremation = new HashMap<>();
     HashMap<String, String> travel = new HashMap<>();

     ArrayList<HashMap<String, String>> x = new ArrayList<>();

        private void createAdditionalPackages() {

        if (chemoBtn.isChecked()) {
            chemo.put("name", "chemo");
            chemo.put("price", chemoButtonPrice);
            x.add(chemo);

        }

        if (cremBtn.isChecked()) {

            cremation.put("name", "crematie");
            cremation.put("price", cremationButtonPrice);
            x.add(cremation);

        }

        if (travenBtn.isChecked()) {

            travel.put("name", "reisverz");
            travel.put("price", travelButtonPrice);
            x.add(travel);

        }

        List<JsonObject> jsonObjectList = new ArrayList<>() ;
        for(HashMap<String, String> data : x){
            JsonObject object = new JsonObject(data);
            jsonObjectList.add(object);
        }

        JsonArray additional_coverages = new JsonArray(jsonObjectList);

        // Toast.makeText(this, additional_coverages.toString(), Toast.LENGTH_SHORT).show();

        String json = new Gson().toJson(x);



        Intent submitUserInformation = new Intent(PetplanAdditionalPlansActivity.this, 
 AnimalInsuranceActivityUserInfo.class);
        submitUserInformation.putExtra("coverages", json);
            submitUserInformation.putExtra("animal_age", animalAge);
            submitUserInformation.putExtra("additional_coverages", x);
            startActivity(submitUserInformation);
        }

Есть идеи?

1 Ответ

0 голосов
/ 15 апреля 2020

Попробуйте это.

        Type type = new TypeToken<ArrayList<HashMap<String, String>>>(){}.getType();
        JsonElement element = new Gson().toJsonTree(x, type);
        JsonArray jsonArray = element.getAsJsonArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...