热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【SpringMVC】springmvc处理JSON

系列文章目录【SpringMVC系列】入门案例【SpringMVC系列】基础知识【SpringMVC系列】RequestMapping注解详解【SpringMVC系列】Hi
系列文章目录

【SpringMVC系列】入门案例

【SpringMVC系列】基础知识

【SpringMVC系列】@RequestMapping注解 详解

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

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

【SpringMVC系列】RestFul编程风格

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

【SpringMVC系列】springmvc处理JSON

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

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

【SpringMVC系列】工作流程详解

【SpringMVC系列】监听器配置



文章目录

  • 系列文章目录
  • 【前言】
  • 一、json操作
    • (一)什么是json
    • (二)json数据格式
      • (1)对象格式
      • (2)数组格式
      • (3)在实际应用中,json一般都是两种格式混合使用
    • (三)json转换工具fastjson
      • (1)fastjson工具使用
        • 第一步 导入fastjson的jar包
        • 第二步 创建controller方法,通过fastjson转换json数据,向页面输出
        • 第三步 展示结果
  • 二、处理json
    • (1)导入jackson的jar包
    • (2)在controller方法添加注解—— @ResponseBody
    • (3)在spring配置文件添加配置
    • (4)把controller方法返回类型改为实际类型
      • ①返回对象类型
      • ②返回集合类型
    • (5)结果
      • ①返回对象的json格式
      • ②返回集合的json格式
    • (6)springmvc处理json底层原理
      • HttpMessageConverter原理




【前言】

今天介绍一下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输入到页面中,使用responseresponse.getWriter().write(resultJson);return null;}
}

将集合转成json:

@Controller
@RequestMapping("/json")
public class TestJsonController {//通过fastjson转换json数据&#xff0c;向页面输出&#64;RequestMapping("/fastjsonlist")public String testFastjsonList(HttpServletResponse response) throws IOException {//创建user对象&#xff0c;设置值User user &#61; new User();user.setId("1");user.setUsername("lili");user.setPassword("111");User user1 &#61; new User();user1.setId("2");user.setUsername("qiqi");user.setPassword("222");ArrayList<User> list &#61; new ArrayList<>();list.add(user);list.add(user1);//把user对象转换为json数据String resultJson &#61; JSON.toJSONString(user);//把resultJson输入到页面中&#xff0c;使用responseresponse.getWriter().write(resultJson);return null;}
}

第三步 展示结果

将对象转成json&#xff1a;
在这里插入图片描述

将集合转成json&#xff1a;
在这里插入图片描述

二、处理json

总结&#xff1a;jar包&#43;注解&#43;返回类型&#43;mvc配置


&#xff08;1&#xff09;导入jackson的jar包

在这里插入图片描述

&#xff08;2&#xff09;在controller方法添加注解—— &#64;ResponseBody

&#64;ResponseBody注解:可以写在类上面&#xff0c;如果写在类上面&#xff0c;类里面所有方法向页面输出内容
&#xff08;而不是跳转页面。如&#xff1a;return “success”&#xff0c;指的不是跳转到 success.jsp 页面&#xff0c;而是返回这个字符串&#xff09;&#xff1b;

&#64;RestController注解&#xff1a;包含两个注解 &#64;Controller&#64;ResponseBody

注&#xff1a;写这一个&#xff0c;和同时写它包含的这两个注解&#xff0c;效果是一样的。

&#xff08;3&#xff09;在spring配置文件添加配置

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

&#xff08;4&#xff09;把controller方法返回类型改为实际类型

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

①返回对象类型

//springmvc处理json&#64;ResponseBody&#64;RequestMapping("/jsondemo1")public User getJsonDemo1(){//创建user对象&#xff0c;设置值User user &#61; new User();user.setId("1");user.setUsername("lucy");user.setPassword("123");return user;}

②返回集合类型

//springmvc处理json&#64;ResponseBody&#64;RequestMapping("/jsondemo2")public List<User> getJsonDemo2(){//创建user对象&#xff0c;设置值User user &#61; new User();user.setId("1");user.setUsername("lili");user.setPassword("111");User user1 &#61; new User();user1.setId("2");user.setUsername("qiqi");user.setPassword("222");ArrayList<User> list &#61; new ArrayList<>();list.add(user);list.add(user1);return list;}

&#xff08;5&#xff09;结果


①返回对象的json格式

在这里插入图片描述

②返回集合的json格式

在这里插入图片描述

&#xff08;6&#xff09;springmvc处理json底层原理

在这里插入图片描述

  • HttpMessageConverter 是 Spring3.0 新添加的一个接口&#xff0c;
    负责将请求信息转换为一个对象&#xff08;类型为 T&#xff09;&#xff0c;将对象&#xff08;类型为 T&#xff09;输出为响应信息

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


HttpMessageConverter原理

1&#xff09; HttpMessageConverter 是 Spring3.0 新添加的一个接口&#xff0c;负责将请求信息转换为一个对象&#xff08;类型为 T&#xff09;&#xff0c;将对象&#xff08;类型为 T&#xff09;输出为响应信息。

2&#xff09; HttpMessageConverter接口定义的方法&#xff1a;

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

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

List getSupportMediaTypes()&#xff1a;该转换器支持的媒体类型。

T read(Class clazz,HttpInputMessage inputMessage)&#xff1a;将请求信息流转换为 T 类型的对象。

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


json的介绍就告一段落啦~

感谢阅读哇~


推荐阅读
author-avatar
哈哈哈-哈哈哈-哈哈哈
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有