如何让Jackson JSON生成的数据包含的中文以unicode方式编码

如何让Jackson JSON生成的数据包含的中文以unicode方式编码,第1张

Jackson JSON其实在默认设置下已经具备了对Unicode编码的JSON数据进行解析。所欠缺的就是在序列化对象时缺少相应的步骤。好在Jackson JSON框架允许我们自定义序列化方法。那么我们就来写一个序列化类: 复制代码代码如下: import javaioIOExce

三种情况
1java下使用new date()获取的时间会和真实的本地时间相差8小时。
2本地获取的时间没有错,存入数据库的时候时间相差8小时。
3数据库时间没有错,获取到了后端,之后返回给前端相差8小时。
原因:
1new date()调用的是jvm时间,而jvm使用的时间默认是0时区的时间,即:和北京时间将会相差8小时。
2mybatis将本地的数据传入到mysql数据库服务器的时候,服务器会对数据进行检测,会把date类型的数据自动转换为mysql服务器所对应的时区,即0时区,所以会相差8小时。
3springboot中对加了@RestController或者@Controller+@ResponseBody注解的方法的返回值默认是Json格式,
所以,对date类型的数据,在返回浏览器端时,会被springboot默认的Jackson框架转换,而Jackson框架默认的时区GMT(相对于中国是少了8小时)。所以最终返回到前端结果是相差8小时。
解决方案:
1手动设置jvm时间:将时间改为第8时区的时间。
TimeZonesetDefault(TimeZonegetTimeZone("GMT+8"));
2在appricationyml文件中配置一下数据库连接信息,url加上:&serverTimezone=GMT%2b8。
3将spring的json构造器的时区改正即可,在applicationyml文件中添加。
或者可以使用注解,在entity实体类的date数据上添加注解,那么数据库传回的data数据要转换为json格式的时候就是北京时间了,再次传回到前端的时候,也不会出现时区问题

Gson、FastJson、Jackson每种都有自己的优劣势。
Gson、FastJson、Jackson综合对比
三种框架在实现上都使用了反射机制;
三种框架目前仍然在维护,所以从这一点来讲,使用任何一个框架都是靠谱的,因为有人在维护,反馈问题可以改,遇到问题也可以问;
三种框架FastJson的包最小(为了方便对比大小,均是对jar包做的统计),只有196K,其次是Gson的227K,Jackson会大很多,超过了1M;
三种框架在1000倍数据量级以内效率都很高、占用内存也低,效率最高的是FastJson,内存占用都差不多;1000倍数据量级以上内存占用会很大,并且平均耗时会超过1S,FastJson表现中规中矩;
json解析、转换是一件很耗CPU的工作;
三种框架在bean转换为json时都有很好的易用性,但在json解析的实现上,FastJson使用起来最简单,其次是Gson;
FastJson对bean有要求,必须要有默认的构造函数,如果bean类没有默认的构造函数并且是无法修改的(比如拿不到源码),相比于另外两个框架会有弱势。

通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下
(1)加入Jacksonjar
(2)在controller中配置json的映射
(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10384700.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-08
下一篇2023-05-08

发表评论

登录后才能评论

评论列表(0条)

    保存