从地图中恢复数据时获取双方括号

时间:2017-01-03 08:52:10

标签: java

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

这是我的程序

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<String, JsonArray> datafromdb = new LinkedHashMap<String, JsonArray>();

        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"}]]

您能否告诉我如何检索此问题

1 个答案:

答案 0 :(得分:2)

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

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);
}