Map<String, String[]> map = request.getParameterMap(); Gson gson = new Gson(); Iterator<String> keyit = map.keySet().iterator(); while (keyit.hasNext()) { String key = keyit.next(); String value = "[" + map.get(key)[0] + "]"; List result = gson.fromJson(value, List.class); Object object = result.get(0); request.setAttribute(key, object); }
$("#list").bind("click",function(){ var data = [123, 456, 789]; $.post('list',{"data":JSON.stringify(data)},function(result){ var json = JSON.parse(result); alert(json.sname); }); });
把代码改成:gson.fromJson(value, new TypeToken<List<Integer>>(){}.getType());试试
Map<String, String[]> map = request.getParameterMap();
Gson gson = new Gson();
Iterator<String> keyit = map.keySet().iterator();
while (keyit.hasNext()) {
String key = keyit.next();
String value = "[" + map.get(key)[0] + "]";
List result = gson.fromJson(value, List.class);
Object object = result.get(0);
request.setAttribute(key, object);
}
$("#list").bind("click",function(){
var data = [123, 456, 789];
$.post('list',{"data":JSON.stringify(data)},function(result){
var json = JSON.parse(result);
alert(json.sname);
});
});
问题原因:
gson把int,long类型转化为了double类型解决方案:
不使用gson,而改成jackson工具包