SpringMVC学习|JSON讲解、Controller返回JSON数据、Jackson、JSON乱码处理、FastJson

2023-09-15 14:43:58

JSON讲解

JSON(JavaScript Object Notation,JS 对象标记)是一种轻量级的数据交换格式,目前使用特别
广泛。
采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
在JavaScript 语言中,一切都是对象。因此,任何JavaScript 支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等。看看他的要求和语法格式:
对象表示为键值对,数据由逗号分隔
花括号保存对象
方括号保存数组
JSON 键值对是用来保存 JavaScript 对象的一种方式,和JavaScript 对象的写法也大同小异键/值对组合中的键名写在前面并用双引号"”包裹,使用冒号:分隔,然后紧接着值:
{"name":"QinJiang"}

{"age":"3"}

{"sex":"男"}

前后端分离时代,前端和后端的数据交互用json交换格式。

理解JSON的demo

创建一个html页面,定义一个JavaScript的对象,我们可以将这个js对象转换为json对象,也可以将json对象转换为js对象

访问这个html页面,发现json对象就是普通的字符串,js对象是可展开的。

Controller返回JSON数据

Jackson

Jackson应该是目前比较好的json解析工具了
当然工具不止这一个,比如还有阿里巴巴的 fastjson 等等。

我们这里使用Jackson,在上一篇文章环境的基础上使用它需要导入它的jar包;还有lombok依赖。

编写一个User实体类

编写一个Controller,然后在方法上加@ResponseBody注解,这样返回的内容就不会走视图解析器,而是直接返回一个字符串。

加lib,添依赖,配Tomcat

访问这个Controller方法的路由,发现返回了一个User的普通字符串,但是有乱码。

我们调用jackson的方法,新建一个ObjectMapper对象,调用这个对象的writeValueAsString的方法将我们创建的一个User对象,转换为JSON格式的字符串,并返回它。

再调用这个Conroller的方法,发现返回的是一个JSON格式的字符串,也有乱码。

JSON乱码处理

发现出现了乱码问题,我们需要设置一下他的编码格式为utf-8,以及它返回的类型。通过@RequestMaping的produces属性来实现,修改下代码

再次调用Controller的这个方法,发现乱码问题解决。

乱码统一解决
上一种方法比较麻烦,如果项目中有许多请求则每一个都要添加,可以通过Spring配置统一指定,这样就不用每次都去处理了!
我们可以在springmvc的配置文件上添加一段消息StringHttpMessageConverter转换配置!

在有映射器、适配器、视图解析器配置的那个springmvc-servlet.xml的那个配置文件中添加JSON乱码问题解决的配置。

@RequestMapping就不用加刚才的东西了

再访问,乱码问题也一样被解决。

理解Jackson的小demo

再创建一个Controller的方法,创建许多User对象,都加入到一个List集合中,我们依然调用以前的方法,可以直接将这个集合转换为JSON格式的字符串。

访问该方法,看到返回结果。

关于返回时间的格式问题

新建一个时间对象,用ObjectMapper对象转换为JSON对象返回,默认为时间戳格式

显示出来是时间戳格式,不好理解。

设置一个SimpleDateFormat的对象,定义时间格式为"yyyy-MM-dd HH:mm:ss,再转化为JSON对象时,先用这个对象的format方法嵌套一层再转换。

这种时间格式返回更加清晰易懂。

还有另外一种该法。让ObjectMapper对象的默认把时间转换成时间戳的方式关闭,然后自定义一个日期的格式SimpleDateFormat对象,设置日期格式,将ObjectMapper对象通过setDateFormat方法设置它的日期转换格式,然后正常调用这个对象的转换JSON方法,加入日期对象即可。

我们把这个转换JSON的操作定义成一个JsonUtils方法类,方便我们后续使用

再需要将对象转换成JSON字符串时,调用这个工具类即可。

FastJson

fastjson.jar是阿里开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。实现json的转换方法很多,最后的实现结果都是一样的。

导入fastjson的依赖

它的各种方法。

更多推荐

GraphQL基础知识与Spring for GraphQL使用教程

文章目录1、数据类型1.1、标量类型1.2.高级数据类型基本操作2、SpringforGraphQL实例2.1、项目目录2.2、数据库表2.3、GraphQL的schema.graphql2.4、Java代码3、运行效果3.1、添加用户3.2、添加日志3.3、查询所有日志3.4、查询指定用户日志3.5、数据订阅4、总结

从李佳琦到背后的商业逻辑再到游戏行业

引言前阵子,李佳琦在直播间带货某牌子的眉笔时,被网友质疑越来越贵,对此李佳琦回应表示,79的眉笔不贵,国货品牌很难的,买不起的话,要找找自己的原因并反思这么多年有没有涨工资,有没有认真工作。他飘了吗?从他的语气和神情来看,的确是有点上头。像极了考上了985、211之后嫌弃父母不够体面孩子。小伙伴都知道,我们人一直以来都

2024考研王道计算机408数据结构+操作系统+计算机组成原理+计算机网络

2024考研王道计算机408数据结构+操作系统+计算机组成原理+计算机网络链-接:https://pan.baidu.com/s/152XLyH64TlcLXwmU-zlAsQ?pwd=r7zf提取码:r7zf信道利用率在408中经常考察到这里,我给大家总结一下这一类题目的做题方法以及技巧。首先,我们假定发射窗口大小是

在 Linux 文件系统中使用 attr 添加扩展属性

我使用开源的XFS文件系统是为了其扩展属性带来的小小便利。扩展属性是一种为我的数据添加上下文的独特方式。“文件系统”是一个描述你的计算机怎样跟踪你创建的所有文件的完美词语。你的计算机存储有大量的数据,无论是文档、配置文件还是数以千计的照片。这需要一种对人和机器都友好的方式。诸如Ext4、XFS、JFS、BtrFS的文件

的修大数据管理平台有哪些功能模块?它可以为企业带来什么好处?

的修大数据管理平台的功能比较强大,它提供了报修、维修、巡检、能耗、智识库、管线智慧云等应用场景服务,同时还可以为企业提供维保进度追踪、员工考核、服务流程管控、设备资产管理等一站式解决方案。平台通过多渠道报修、“一站式”投诉建议服务、企业云课堂、智能巡检、配件管理、多维度数据分析等功能,打造了移动、便捷、高效、安全、智能

国外发达国家码农是真混得好么?

来看看花旗工作十多年的码农怎么说吧!美国最大的论坛Reddit,之前有一个热帖:一个程序员说自己喝醉了,软件工程师已经当了10年,心里有好多话想说,“我可能会后悔今天说了这些话。”他洋洋洒洒写了一大堆,获得9700多个赞。内容很有意思,和题主“国外发达国家码农真的混的好么”这个问题很贴切,而且是10年老程的员的肺腑之言

外包干了2个月,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试,已经让我变得不思进取,谈了2年的女朋友也因为我的心态和工资和我分手了。于是,我决定要改变现状,冲击下大厂。刚开始准备时

Spring Cloud超越微服务:服务网格的崭露头角

文章目录1.微服务的挑战2.什么是服务网格?3.SpringCloud和服务网格服务发现负载均衡安全性服务网格扩展4.服务网格的优势4.1.解耦通信逻辑4.2.提高可观察性4.3.灰度发布和流量控制4.4.安全性5.未来展望6.结论🎉欢迎来到架构设计专栏~SpringCloud超越微服务:服务网格的崭露头角☆*o(≧

大数据-Spark-Spark开发高频面试题

一、spark的内存分布堆内内存:在这使用堆内内存的时候,如果我们设置了堆内内存2个g的话,读取的数据也是两个g,此时又来两个g的数据,这样就会产生OOM溢出,因为处理完两个g的数据,并不会马上进行GC。堆外内存:这样我们就可以使用堆外内存,也就是物理内存,堆外内存可以精准的申请和释放空间,不需要Gc,性能比较高,提升

基于Hadoop的MapReduce网站日志大数据分析(含预处理MapReduce程序、hdfs、flume、sqoop、hive、mysql、hbase组件、echarts)

需要本项目的可以私信博主!!!本项目包含:PPT,可视化代码,项目源码,配套Hadoop环境(解压可视化),shell脚本,MapReduce代码,文档以及相关说明教程,大数据集!本文介绍了一种基于Hadoop的网站日志大数据分析方法。本项目首先将网站日志上传到HDFS分布式文件系统,然后使用MapReduce进行数据

Microsoft Excel 101 简介

什么是MicrosoftExcel?MicrosoftExcel是一个电子表格程序,用于记录和分析数值数据。将电子表格想像成构成表格的列和行的集合。字母通常分配给列,数字通常分配给行。列和行相交的点称为像元。单元格的地址由代表列的字母和代表行的数字给出。让我们使用下图说明这一点。为什么要学习MicrosoftExcel

热文推荐