从地图中重新获取数据时获取双方括号

我将数据以String的forms存储在Map中作为键,JSONArray作为值存储但是在检索数据时,我得到了双方括号的值

这是我的计划

import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class Test { public static void main(String args[]) { Map datafromdb = new LinkedHashMap(); JsonArray jsonarray = new JsonArray(); JsonObject pacs_obj = new JsonObject(); pacs_obj.addProperty("pac_id", "1235"); jsonarray.add(pacs_obj); String new_catid = "1"; if (!datafromdb.containsKey(new_catid)) { datafromdb.put(new_catid, new JsonArray()); } datafromdb.get(new_catid).add(jsonarray); Iterator it = datafromdb.entrySet().iterator(); JsonArray catarr = new JsonArray(); while (it.hasNext()) { Map.Entry pair = (Map.Entry) it.next(); JsonArray array = (JsonArray) pair.getValue(); System.out.println(array); } } } 

当我运行上述程序时,输出是

 [[{"pac_id":"1235"}]] 

你能告诉我如何找回这个问题吗?

你有两个方括号,因为你创建了两个数组:这里:

 JsonArray jsonarray = new JsonArray(); JsonObject pacs_obj = new JsonObject(); pacs_obj.addProperty("pac_id", "1235"); jsonarray.add(pacs_obj); 

和这里:

 if (!datafromdb.containsKey(new_catid)) { datafromdb.put(new_catid, new JsonArray()); } datafromdb.get(new_catid).add(jsonarray); 

只需摆脱一个数组,例如:

 if (!datafromdb.containsKey(new_catid)) { datafromdb.put(new_catid, jsonarray); }