有 Java 编程相关的问题?

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

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) 个答案

  1. # 1 楼答案

    getPositiontMapByDepartmentId不返回数组,它返回一个映射。因此,要获得数组,请将映射转换为一个集合,然后调用toArray()

    在方法中使用以下返回值

    return gson.toJson(positiontMapByDepartmentId.entrySet().toArray());