博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring框架5的spring-web模块中的Java对象与HTTP消息之间的数据转换器一览
阅读量:4178 次
发布时间:2019-05-26

本文共 1515 字,大约阅读时间需要 5 分钟。

Spring Framework 5.0.7.RELEASE版本中的spring-web模块,提供org.springframework.http.converter包,提供了一系列的Java对象与HTTP消息之间的数据转换器。其中,最基本的是org.springframework.http.converter.HttpMessageConverter接口,是所有具体数据转换器实现的基本接口。

通过这些数据转换器,Spring框架支持如下的各种HTTP请求/响应消息格式:

  • CBOR
  • Atom, RSS
  • JSON
  • Google Protocol Buffers
  • XML

下面重点介绍JSON格式的HTTP请求/响应消息与Java对象之间的转换。

1. Jackson2 (默认)

事实上,即使对于开发人员来说,这种转换过程也几乎是自动完成的,默认无需进行任何设置

这是因为,作为Spring应用,其中一家默认包含了Jackson2用以操作JSON格式的数据。只要你的HTTP请求/响应消息具有如下特性,Spring框架就会推测出HTTP消息采用了JSON格式,从而自动在Java对象与JSON消息之间进行转换,从而免去了开发人员的操作JSON消息赋值给model对象之苦:

  • MediaType为application/json或application/*+json
  • Charset为UTF-8

这种自动的转换是通过org.springframework.http.converter.json.MappingJackson2HttpMessageConverter类完成的。

此外,Jackson2还可以操作其他格式的数据,Spring框架中海提供了类似的数据转换器:

  • MappingJackson2CborHttpMessageConverter
  • MappingJackson2SmileHttpMessageConverter
  • MappingJackson2XmlHttpMessageConverter

2. GSON

我们知道,除了Jackson2,能够操作JSON格式数据的还有GSON。对于习惯GSON的开发人员,Spring框架中还提供了GSON的JSON消息转换器,但需要开发人员指定使用org.springframework.http.converter.json.GsonHttpMessageConverter类。其使用的条件与Jackson2类似,也要求HTTP请求/响应消息如下:

  • MediaType为application/json或application/*+json
  • Charset为UTF-8
GsonHttpMessageConverter gsonConverter = new GsonHttpMessageConverter();...gsonConverter.setSupportedMediaTypes(myMediaTypeList);gsonConverter.setDefaultCharset(Charset.defaultCharset());...restTemplate.setMessageConverters(List.of(gsonConverter));

3. JavaEE 8的JSON Binding API

最后,Spring框架中还提供了采用JSON Binding的JSON消息转换器,其实现是通过org.springframework.http.converter.json.JsonbHttpMessageConverter类。

 

参考链接:

 

转载地址:http://lmlai.baihongyu.com/

你可能感兴趣的文章
NAND flash和NOR flash的区别
查看>>
writeb(), writew(), writel(),readb(), readw(), readl() 宏函数
查看>>
NOR Flash擦写和原理分析
查看>>
51单片机程序执行流程(STARTUP.A51)
查看>>
原码, 反码, 补码 详解
查看>>
Java自学第一阶段(二)- 小试牛刀
查看>>
Java自学第一阶段(三)- 万能的变量
查看>>
Java自学第一阶段(四)-万能的变量(2)
查看>>
HashMap存储原理以及与hashcode、equals方法的关系
查看>>
python3.6在windows下安装scrapy遇到的问题总结
查看>>
pycharm中打开scrapy项目,import scrapy报错问题
查看>>
scrapy爬取图片,自定义图片下载路径和图片名称
查看>>
python3下import MySQLdb出错问题
查看>>
Maven搭建SSM框架(eclipse)
查看>>
synchronized+Integer模拟火车票预售,出现的问题总结
查看>>
沉浸式过山车:穿梭时空,自在畅游巨蚁数字虚实世界
查看>>
沉浸式过山车,感受巨蚁数字心灵的激情
查看>>
沉浸式过山车,巨蚁数字带给您前所未有的科技体验
查看>>
质量好的自行车品牌有哪些辐轮王土拨鼠全球顶级自行车品牌排行榜
查看>>
htmlunit爬取js异步加载后的页面
查看>>