jsp中的javascript-Json哈希映射视图
我需要一个问题的解决方案,使用我的类型Json返回{"1":"Position1","2":"Position2"}
,但我需要[{"id":1,"name":Position1},{"id":2,"name":Position2}]
这是我的方法控制器:
@GET
@RequestMapping(value = "/getPositiontMapByDepartmentId/{departmentId}")
@ResponseBody
public String getPositiontMapByDepartmentId(Employee employee, Model model,
@PathVariable("departmentId") int departmentId) {
Gson gson = new Gson();
List<Position> positionListById = positionService.findAllPositionsByDepartmentId(departmentId);
Map<Integer, String> positiontMapByDepartmentId = preparePositionMapByDepartmentId(departmentId);
positionListById.toArray();
return gson.toJson(positiontMapByDepartmentId);
}
public Map<Integer, String> preparePositionMapByDepartmentId(int departmentId) {
Map<Integer, String> positiontMapByDepartmentId = new HashMap<Integer, String>();
List<Position> positionListById = positionService.findAllPositionsByDepartmentId(departmentId);
for( Position position : positionListById){
positiontMapByDepartmentId.put(position.getId(),position.getName());
}
return positiontMapByDepartmentId;
}
我的jsp和Java脚本
$(document).ready(
function() {
$('#departmentSelect').on("change", function () {
var departmentId = $("#departmentSelect option:selected").val();
$.ajax({
type: "GET",
url: "/admin/getPositiontMapByDepartmentId/"+departmentId,
success: function (result) {
alert(result);
var result = JSON.parse(result);
var position = "";
for(var i = 0; i<result.length; i++){
position+= '<option value="' + result[i].id + '">' + result[i].name +'</option>';
}
$('#positionSelect').html(position);
}
});
});
});
当我得到{"1":"Position1","2":"Position2"}
时,我的JS可以将select改进为html
# 1 楼答案
getPositiontMapByDepartmentId不返回数组,它返回一个映射。因此,要获得数组,请将映射转换为一个集合,然后调用toArray()
在方法中使用以下返回值