您好我必须将地图发送到服务器,服务器将从中获取信息。我有两段代码用于映射(名称和键是变量)
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));
}
此代码无效,表示服务器不接受此代码。但是当我打印键值对时,两个代码的结果都相同。我的主角不喜欢使用第一段代码。任何人都可以解释为什么,过去两天我都对此感到震惊。谢谢。我的英语很差。
答案 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。