有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在从地图检索数据时获得双方括号

我以字符串作为键,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<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) 个答案

  1. # 1 楼答案

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

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