【SpringMVC】springmvc处理JSON

系列文章目录

【SpringMVC系列】入门案例

【SpringMVC系列】基础知识

【SpringMVC系列】@RequestMapping注解 详解

【SpringMVC系列】HiddenHttpMethodFilter 过滤器配置实例及源码分析

【SpringMVC系列】请求数据和响应数据的处理

【SpringMVC系列】RestFul编程风格

【SpringMVC系列】视图解析器详解

【SpringMVC系列】springmvc处理JSON

【SpringMVC系列】文件上传及下载实例详解

【SpringMVC系列】拦截器及实例讲解

【SpringMVC系列】工作流程详解

【SpringMVC系列】监听器配置



【前言】

今天介绍一下json的基础知识,和mvc是如何处理json的

一、json操作

(一)什么是json

(1)json是一种数据交互格式
(2)json结构 key-value
(3)结构简单,操作方便

(二)json数据格式

(1)对象格式

  {"username":"lucy" , "age":20}

(2)数组格式

["aa","bb"]
[{"username":"lucy" , "age":20},{"username":"mary" , "age":30}]

(3)在实际应用中,json一般都是两种格式混合使用

 {	"name":"books",
	"data":
		[{"username":"lucy" , "age":20},{"username":"mary" , "age":30}]
  }

(三)json转换工具fastjson

常用转换工具:
gson(谷歌)、fastjson(阿里) 、jsonlib 、jackson(Springmvc内置)

(1)fastjson工具使用

第一步 导入fastjson的jar包

在这里插入图片描述

第二步 创建controller方法,通过fastjson转换json数据,向页面输出

将对象转成json:

@Controller
@RequestMapping("/json")
public class TestJsonController {

    //通过fastjson转换json数据,向页面输出
    @RequestMapping("/fastjson")
    public String testFastjson(HttpServletResponse response) throws IOException {
        //创建user对象,设置值
        User user = new User();
        user.setId("1");
        user.setUsername("lili");
        user.setPassword("111");
        //把user对象转换为json数据
        String resultJson = JSON.toJSONString(user);
        //把resultJson输入到页面中,使用response
        response.getWriter().write(resultJson);
        return null;
    }
}

将集合转成json:

@Controller
@RequestMapping("/json")
public class TestJsonController {

    //通过fastjson转换json数据,向页面输出
    @RequestMapping("/fastjsonlist")
    public String testFastjsonList(HttpServletResponse response) throws IOException {
        //创建user对象,设置值
        User user = new User();
        user.setId("1");
        user.setUsername("lili");
        user.setPassword("111");

        User user1 = new User();
        user1.setId("2");
        user.setUsername("qiqi");
        user.setPassword("222");

        ArrayList<User> list = new ArrayList<>();
        list.add(user);
        list.add(user1);

        //把user对象转换为json数据
        String resultJson = JSON.toJSONString(user);
        //把resultJson输入到页面中,使用response
        response.getWriter().write(resultJson);
        return null;
    }
}
第三步 展示结果

将对象转成json:
在这里插入图片描述

将集合转成json:
在这里插入图片描述

二、处理json

总结:jar包+注解+返回类型+mvc配置

(1)导入jackson的jar包

在这里插入图片描述

(2)在controller方法添加注解—— @ResponseBody

@ResponseBody注解:可以写在类上面,如果写在类上面,类里面所有方法向页面输出内容
(而不是跳转页面。如:return “success”,指的不是跳转到 success.jsp 页面,而是返回这个字符串);

@RestController注解:包含两个注解 @Controller@ResponseBody

注:写这一个,和同时写它包含的这两个注解,效果是一样的。

(3)在spring配置文件添加配置

<mvc:annotation-driven></mvc:annotation-driven>

(4)把controller方法返回类型改为实际类型

如果返回的是对象,就把方法返回类型换成对象名称,如果是集合就换成集合名称

①返回对象类型

    //springmvc处理json
    @ResponseBody
    @RequestMapping("/jsondemo1")
    public User getJsonDemo1(){
        //创建user对象,设置值
        User user = new User();
        user.setId("1");
        user.setUsername("lucy");
        user.setPassword("123");

        return user;
    }

②返回集合类型

    //springmvc处理json
    @ResponseBody
    @RequestMapping("/jsondemo2")
    public List<User> getJsonDemo2(){
        //创建user对象,设置值
        User user = new User();
        user.setId("1");
        user.setUsername("lili");
        user.setPassword("111");

        User user1 = new User();
        user1.setId("2");
        user.setUsername("qiqi");
        user.setPassword("222");

        ArrayList<User> list = new ArrayList<>();
        list.add(user);
        list.add(user1);

        return list;
    }

(5)结果

①返回对象的json格式

在这里插入图片描述

②返回集合的json格式

在这里插入图片描述

(6)springmvc处理json底层原理

在这里插入图片描述

  • HttpMessageConverter<T> 是 Spring3.0 新添加的一个接口,
    负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息

  • springmvc进行json转换使用转换器 MappingJackson2HttpMessageConverter

HttpMessageConverter原理

1) HttpMessageConverter 是 Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息。

2) HttpMessageConverter接口定义的方法:

Boolean canRead(Class<?> clazz,MediaType mediaType): 指定转换器可以读取的对象类型,即转换器是否可将请求信息转换为 clazz 类型的对象,同时指定支持 MIME 类型(text/html,applaiction/json等)。

Boolean canWrite(Class<?> clazz,MediaType mediaType):指定转换器是否可将clazz 类型的对象写到响应流中,响应流支持的媒体类型在MediaType 中定义。

List<MediaType> getSupportMediaTypes():该转换器支持的媒体类型。

T read(Class<? extends T> clazz,HttpInputMessage inputMessage):将请求信息流转换为 T 类型的对象。

void write(T t,MediaType contnetType,HttpOutputMessgae outputMessage):将T类型的对象写到响应流中,同时指定相应的媒体类型为 contentType。


json的介绍就告一段落啦~

感谢阅读哇~

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cakeAndAle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值