如何在Spring MVC和Hibernate中将对象列表转换为JSON?

时间:2015-09-08 04:52:40

标签: java json spring hibernate spring-mvc

我使用Spring MVC和hibernate从MySQL获取数据。在控制器类中,ModelAndView方法listEmployees正在返回MAP。该方法从EmployeeService类获取Employee对象的列表。我希望此方法从Service类中获取Employee对象列表并将其转换为JSON,或将其转换为JSON并将该数据写入JSON文件,以便我可以在JSP页面中使用此JSON数据。

@RequestMapping(value="/employees", method = RequestMethod.GET)  
 public @ResponseBody ModelAndView listEmployees() {  
  Map<String, Object> model = new HashMap<String, Object>();
  model.put("employees",prepareListofBean(employeeService.listEmployeess()));  
  return new ModelAndView("employeesList", model);  

 }

private List<EmployeeBean> prepareListofBean(List<Employee> employees){
        List<EmployeeBean> beans = null;
        if(employees != null && !employees.isEmpty()){
            beans = new ArrayList<EmployeeBean>();
            EmployeeBean bean = null;
            for(Employee employee : employees){
                bean = new EmployeeBean();
                bean.setName(employee.getEmpName());
                bean.setId(employee.getEmpId());
                bean.setAddress(employee.getEmpAddress());
                bean.setSalary(employee.getSalary());
                bean.setAge(employee.getEmpAge());
                beans.add(bean);
            }
        }
        return beans;
    }

修改

在下面的方法中,我尝试使用GSON将列表转换为JSON,但是获得了空指针Exception。

**@RequestMapping(value="/employees1", method = RequestMethod.GET)  
    public ModelAndView employeelist() {  

    Gson gson=new Gson();
    gson.toJson(employeeService.listEmployeess());

    ModelAndView modelAndView=new ModelAndView();
    modelAndView.addObject(gson);

    return modelAndView;

    }**

上述方法可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

您需要将返回的json值分配给String对象,然后将其传递给ModelAndView。请参阅Gson.toJson()并确保您的班级(EmployeeBean)为serializable

@RequestMapping(value = "/employees1", method = RequestMethod.GET)
public ModelAndView employeelist() {
    Gson gson = new Gson();
    String json = gson.toJson(employeeService.listEmployeess());

    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject(json);

    return modelAndView;
}