Android映射不起作用

时间:2016-05-30 15:59:00

标签: android hashmap

您好我必须将地图发送到服务器,服务器将从中获取信息。我有两段代码用于映射(名称和键是变量)

String user = "{ 'id':" + userId +","+"'response':{'id':"+userId+",'access':"+"'"+name+":"+key+"'"+"}}";

        Map<String, Object> userMap = new Gson().fromJson(user, new TypeToken<HashMap<String, Object>>() {}.getType());
        Set<String> keys = userMap.keySet();
        for (String i:keys){
            Log.d("user",i+"  "+userMap.get(i));
        }

在这里我连接所需的字符串并解析它然后将其转换为map。这条代码起作用了。我的第二组代码是

String user1 = "{id="+userId+", access="+""+name+":"+key+""+"}";
        Map<String,Object> tuc = new HashMap<>();
        tuc.put("id",userId);
        tuc.put("access","");
        Set<String> key = tuc.keySet();
        for (String i:key){
            Log.d("user",i+"  "+tuc.get(i));
        }

此代码无效,表示服务器不接受此代码。但是当我打印键值对时,两个代码的结果都相同。我的主角不喜欢使用第一段代码。任何人都可以解释为什么,过去两天我都对此感到震惊。谢谢。我的英语很差。

1 个答案:

答案 0 :(得分:0)

在Java中,HashMap只能接受<key, value>对。它不像Json,在你的情况下是{key1:value1, key2:value2, ...}格式。

因此,如果您打算将其格式从{key1:value1, key2:value2, ...}转换为<key, value>。我的建议是将value2, value3, ...合并为一个对象(如String)作为值,将value1作为键。

有关详细信息,请参阅https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html