Spring MVC中的JSON处理

Spring MVC中的JSON处理

原来的做法

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.68</version>
        </dependency>
@RequestMapping("/demo1")
    public void demo1(HttpServletRequest request, HttpServletResponse response) throws IOException {
    
    
        //1. 设置响应内容
        response.setContentType("application/json;charset=utf-8");

        //2. 拿流写回JSON字符串
        Map<String,String> data = new HashMap<>();
        data.put("name","张三");
        data.put("age", "20");

        String s = JSON.toJSONString(data);
        response.getWriter().write(s);
    }

Spring框架下

在Spring框架下,这种开发工作也可以简化。

  • 导入Jackson 的json库

         <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.11.2</version>
            </dependency>
    
  • 或者导入Gson 的json库

            <dependency>
                <groupId>com.google.code.gson</groupId>
                <artifactId>gson</artifactId>
                <version>2.8.6</version>
            </dependency>
    

处理器方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N5cdFVXY-1599652679868)(imges/image-20200909141231370.png)]

原理

  • 当处理器的方法上标记 @ResponseBody , @RequestBody
  • 或者处理器的返回值类型是 HttpEntity 、 ReponseEntity 。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chuRQ3Wk-1599652679871)(imges/image-20200909142017163.png)]

Spring内部的 HttpMessageConverter 会在 RequestMappingHandlerAdapter 处理器方法执行过程中,进行工作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dN4txYyt-1599652679873)(imges/image-20200909143240095.png)]

下面演示用 fastJson 来处理 JSON数据的返回:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B1Q6OGNo-1599652679876)(imges/image-20200909144414388.png)]

写法:

  • 1.在这里插入图片描述

  • 2.在这里插入图片描述

  • 3.当一个类中的所有方法都是json数据时 相当于下图
    在这里插入图片描述依据是在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47371330/article/details/108501061
今日推荐