spring mvc返回json字符串的方式


一.返回ModelAndView,其中包含map集

復制代碼
復制代碼
/*
     * 返回ModelAndView類型的結果
     * 檢查用戶名的合法性,如果用戶已經存在,返回false,否則返回true(返回json數據,格式為{"valid",true})
     */
    @RequestMapping(value = "/checkNameExistsMethod2", produces = "application/json;charset=UTF-8") //這里的produces值在不設置的情況下將根據返回結果自動決定
    public @ResponseBody
    ModelAndView checkNameValidMethod2(@RequestParam String name) {
        boolean result = true;
       //...
        Map<String, Boolean> map = new HashMap<>();
        map.put("valid", result);
        return new ModelAndView(new MappingJackson2JsonView(), map);
    }
復制代碼
復制代碼

 

 

二.返回String類型的json,這里有兩種方式。

方式一:使用jackson-databind-x.x.x.jar包中的ObjectMapper將Map型數據改寫為String並返回

復制代碼
復制代碼
  /*
     * 返回String類型的結果
     * 檢查用戶名的合法性,如果用戶已經存在,返回false,否則返回true(返回json數據,格式為{"valid",true})
     */
    @RequestMapping(value = "/checkNameExistsMethod1", produces = "application/json;charset=UTF-8")
    public @ResponseBody
    String checkNameValidMethod1(@RequestParam String name) {
        boolean result = true;
        //...
        Map<String, Boolean> map = new HashMap<>();
        map.put("valid", result);
        ObjectMapper mapper = new ObjectMapper();
        String resultString = "";
        try {
            resultString = mapper.writeValueAsString(map);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return resultString;
    }
復制代碼
復制代碼

 

方式二:

直接返回字符串,主要key/value值必須使用含有轉義字符\的雙引號,單引號無效 

復制代碼
復制代碼
 /*
     * 返回String類型的結果
     * 檢查用戶名的合法性,如果用戶已經存在,返回false,否則返回true(返回json數據,格式為{"valid",true})
     */
    @RequestMapping(value = "/checkNameExistsMethod1", produces = "application/json;charset=UTF-8")
    public @ResponseBody
    String checkNameValidMethod1(@RequestParam String name) {
        boolean result = true;
    String resultString </span>= "{\"result\":true}"; <span style="color: #008000;">//</span><span style="color: #ff0000;">注意一定是雙引號 "{\"result\":\"success\"}"</span>
  
    <span style="color: #0000ff;">return</span><span style="color: #000000;"> resultString;
}</span></pre>
復制代碼
復制代碼

 

三.返回任何預定義class類型的結果:

復制代碼
復制代碼
@RequestMapping(value = "/findEmployeebyName")
    public @ResponseBody
    Employee findEmployeebyName(String name) {
        List<Employee> lstEmployees = employeeService.getAllEmployees();
        for (Employee employee : lstEmployees) {
            if (employee.getName().equals(name))
                return employee;
        }
        return null;
    }
復制代碼
復制代碼

這里的Employ必須事先定義好。

四.使用HttpServletResponse對象的response.getWriter().write(xxx)方法

復制代碼
復制代碼
@RequestMapping(value="/forbiddenUser")
    public void forbiddenUser(int id,HttpServletRequest request,HttpServletResponse response) {
        String resultString="{\"result\":\"success\"}";//注意一定是雙引號 "{\"result\":true}"    
        try {
            response.setContentType("application/json");
            response.getWriter().write(resultString);
        } catch (IOException e) {
            e.printStackTrace();
        }        
    }
復制代碼
復制代碼

 

原文地址:https://www.cnblogs.com/franson-2016/p/5613610.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM