java - 将 HashMap 的 ArrayList 转换为 GSON JsonArray
问题描述
我正在尝试将以下 HashMaps Arraylist 转换为 JsonArray,以便将其添加到我的 JsonObject 中。
我创建了三个包含值对的哈希图,然后将每个哈希图添加到必须转换为 JsonArray 的 ArrayList 中,以便可以将其接受到 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);
}
有任何想法吗?
解决方案
尝试这个。
Type type = new TypeToken<ArrayList<HashMap<String, String>>>(){}.getType();
JsonElement element = new Gson().toJsonTree(x, type);
JsonArray jsonArray = element.getAsJsonArray();
推荐阅读
- ios - 单击时未打开avaudioPlayer音频(swift4)
- html - 如何使用 Prettier 在新行上获取结束 HTML 标记?
- javascript - simple-peer removeTrack/removeStream 正在破坏对等体,而不仅仅是删除 mediaStream
- javascript - 如何从传递 2 个参数的函数中仅返回 1 个参数,并能够在另一个函数 (JavaScript) 中访问它
- java - Google Maps SDK [Android]:如何获取/设置热图的 MaxIntensity?
- php - 删除 php 中的 xml 命名空间
- c++ - 为什么不能在非完全专业化的类模板中定义完全专业化的类模板?
- javascript - 量角器 - 如何验证元素不可见
- node.js - 如何在 mongodb $near 中进行查询和排序并排序
- java - 继续读取 Inputstream (serialport/tty)