8.SpringMVC中json数据传输

8.1 什么是json?

  • JSON (JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
  • 它基于 ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

8.2 json与JavaScript关系

  • JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
  • JSON 和 JS 对象互转

要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:

var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}

要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:

var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'
  • 任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。

    • 表示对象

    • {``"firstName"``: ``"Brett"``, ``"lastName"``: ``"McLaughlin"``}
      
    • 表示数组

    • {
      "people":[
      {"firstName": "Brett",
      "lastName":"McLaughlin"
      },
      {
      "firstName":"Jason",
      "lastName":"Hunter"
      }
      ]
      }
      这不难理解。在这个示例中,只有一个名为 people的变量,值是包含两个条目的数组,每个条目是一个人的记录,其中包含名和姓。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示更过多的值(每个值包含多个记录)。
      

8.3 Json转化器Jackson和FastJson

8.3.1 Jackson

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.11.1</version>
</dependency>

JSON转为Java对象

  1. 导入jackson的相关jar包(依赖)

  2. 创建Jackson核心对象 ObjectMapper ObjectMapper mapper = new ObjectMapper();

  3. 调用ObjectMapper的相关方法进行转换

    readValue(json字符串数据,Class)

Java对象转换JSON

  1. 使用步骤:导入jackson的相关依赖

  2. 创建Jackson核心对象 ObjectMapper ObjectMapper mapper = new ObjectMapper();

  3. 调用ObjectMapper的相关方法进行转换 mapper.writeValue(response.getWriter(),map);

转换方法
writeValue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
writeValueAsString(obj):将对象转为json字符串
readValue(String json,Class aclass);将json字符串转为对象

8.3.2 FastJson

fastjson依赖

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version>
</dependency>

测试代码

@RequestMapping("/xuan2")
public String testJson2(ServletResponse response) throws JsonProcessingException {//json对象User user1 = new User("郑楷",50,"女");User user2= new User("黄文",20,"女");User user3 = new User("杨深",80,"女");User user4 = new User("沙嗲",3,"女");User user5 = new User("郑楷",17,"女");Map<Integer,User> map =new HashMap();map.put(1,user1);map.put(2,user2);map.put(3,user3);map.put(4,user4);map.put(5,user5);return JSON.toJSONString(map);
}

JSON方法

8.4 编写测试

​ 第一步:编写controller层代码

  • 这里的@RestController=@Controller+@RequestBody
package com.xuan.controller;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xuan.pojo.User;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.ServletResponse;@RestController
public class JsonController {@RequestMapping("/xuan")public String testJson(ServletResponse response) throws JsonProcessingException {//json对象ObjectMapper mapper = new ObjectMapper();User user = new User();user.setName("郑泽楷");user.setAge(58);user.setGender("女");String string = mapper.writeValueAsString(user);return string;}
}

​ 第二步:编写关键配置文件

  • 下面是解决json乱码问题的关键配置
<!--json乱码问题配置-->
<mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8"/></bean><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="objectMapper"><bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"><property name="failOnEmptyBeans" value="true"/></bean></property></bean></mvc:message-converters>
</mvc:annotation-driven>

​ 第三步:做测试根据自己的路径

SpringMVC中json数据传输相关推荐

  1. SpringMVC中JSON处理

    JSON是做为前后端分离的中间人,他用来前后端传输数据,这里有详细讲解前端解析JSON,我简单的介绍一下 <!DOCTYPE html> <html lang="en&qu ...

  2. springMVC中json转换器的配置

    配置方法一 1.导入第三方的jackson包,jackson-mapper-asl-x.x.x.jar和jackson-core-asl-x.x.x.jar. 2.spring配置文件添加** < ...

  3. 2020-08-22 SpringMVC中Json使用、后端返回给前端的JSON对象乱码问题、前台对Json数据格式的操作、Jackson以及FastJson使用

    json的使用 我们广义上说的后端开发提供接口,其实指的是我们在Controller层定义的域名:端口号/请求名 前端获取这个请求,去赋给比如表单的action,获取相应的结果集并展示. json:轻 ...

  4. 在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案

    在SpringMVC中使用@RequestBody注解处理json时,报出HTTP Status 415的解决方案 参考文章: (1)在SpringMVC中使用@RequestBody注解处理json ...

  5. SpringMVC 中整合JSON、XML视图一

    SpringMVC中整合了JSON.XML的视图,可以通过这些视图完成Java对象到XML.JSON的转换.转换XML提供了MarshallingView,开发者只需用注入相应的marshaller. ...

  6. mvc json 乱码_你了解JSON吗?——Jackson、FastJson在SpringMVC中的简单使用

    原文参考分享自CSDN:你了解JSON吗?--Jackson.FastJson在SpringMVC中的简单使用_欢迎来到 Baret~H 的博客-CSDN博客 1. 什么是 JSON JSON(Jav ...

  7. SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换)

    Spring3.1开始使用新的HandlerMapping 和 HandlerAdapter 来支持@Contoller 和@RequestMapping注解处理:处理器映射RequestMappin ...

  8. SpringMVC接收json数据转对象中的一些问题(415错误的解决)

    SpringMVC接收json数据转对象中的一些问题(415错误的解决) 参考文章: (1)SpringMVC接收json数据转对象中的一些问题(415错误的解决) (2)https://www.cn ...

  9. 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案

    在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案 参考文章: (1)在SpringMVC中使用@Reque ...

最新文章

  1. 2016年第七届蓝桥杯C/C++ C组国赛 —— 第二题:反幻方
  2. ZOJ4116 Game on a Graph
  3. halcon控制算子Control,持续更新
  4. librosa能量_librosa与python_speech_features
  5. c语言如何一直变换颜色,【图片】(原创)用纯C变了个变色输出字符的程序。。。【c语言吧】_百度贴吧...
  6. DDFE 技术周刊(第四期)2016.11.25
  7. binder 从c到java_Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析...
  8. LeetCode 526. Beautiful Arrangement
  9. 颜色矩特征提取matlab,求matlab彩色图片的颜色特征提取算法的代码,和纹理特征提取的? 爱问知识人...
  10. 计算机时间无法更改,电脑时间不能修改|系统时间改不了 四个解决方法
  11. 朱晔的互联网架构实践心得S1E4:简单好用的监控六兄弟
  12. 远程文件下载/小电影下载
  13. 基于xsh的vbs脚本的使用(条件判断和函数)
  14. 一篇编译内核的详细配置文章
  15. 你知道数据运营日常主要工作吗?
  16. 多邻国-英语学习笔记
  17. 《重说中国近代史》—张鸣—(4)古老命题新解(1)
  18. NTT(快速数论变换)模板
  19. 我的人生只适合黑夜,第一天
  20. MTK如何修改usb驱动能力

热门文章

  1. plsql 12 oracle home,plsql连接远程oracle home怎样设置
  2. 一个牛逼的创业公司后台技术栈搭建方案
  3. nextcloud如何安装app
  4. Python爬虫实战-详细讲解爬取安居客房价数据
  5. 处理npm i 因版本问题导致的报错(legacy-peer-deps)
  6. RS232(Modbus )通讯协议工业高频读写器|读卡器CK-FR08-B01电脑端测试配置说明
  7. 2. C语言 -- printf 的花式操作
  8. shift后门制作和禁止
  9. CountDownTimer
  10. arcgis 圈选获取图层下点位_ARCGIS获取图层下的要素信息及要素类转换为要素