Jackson全面解析--SpringBoot集成Jackson二(HttpMessageConverter)

Jackson全面解析--SpringBoot集成Jackson二(HttpMessageConverter),第1张

上一章讲解了sb中如何的对Jackson进行细粒度的配置,那么sb是如何在框架中嵌入Jackson呢,针对@ResponseBody注解的type或是method,sb会使用RequestResponseBodyMethodProcessor类来进行处理。其中的handleReturnValue方法,会将方法返回的对象进行Converter成我们需要的类型,不如json或是xml的类型。

核心的方法就是最后writeWithMessageConverters(returnValue, returnType, inputMessage, outputMessage)

那这些HttpMessageConverter是如何的注册到sb中的呢,肯定也是configure的配置了,在sb中提供了多处的configure来注册HttpMessageConverter。一个是

HttpMessageConvertersAutoConfiguration,在改配置文件中注册了一个

StringHttpMessageConverter的bean,由于import

由于我的classpath是有jackson的,所以跟到JacksonHttpMessageConvertersConfiguration,其中注册了一个MappingJackson2HttpMessageConverter的bean,

而在生成HttpMessageConverters bean的时候会调用WebMvcConfigurationSupport类的addDefaultHttpMessageConverters方法,在这蠢扮空个里面会继续的缺穗注册一些默认使用到的消息转换器。带瞎

如下

通过这样的方式,sb在启动成功之后,在容器里面就有了这些默认的消息转化器,当然我们可以自定义消息转换器,然后注册进去,也可以实现我们的自定义逻辑

1、xml 区分大小写

2、xml在编写的棚腔时候最好全部大写或者伍和睁全部小写

localName指腔岁定本地名称

localName指定root的根路径的名称,默认值为类名

这个注解写在类上,用来忽略在xml中有的属性但是在类中没有的情况

这个详细说下

这个的含义是指定XML元素用于List或者Map ,默认值userWrapping=true,代表使用包装器元素

这句话 比较难懂 我使用一个具体示例来说下

读取的xml的文件

当使用@JacksonXmlElementWrapper(useWrapping = false) 相当于不使用包装器元素,相当于List内部的实例是不用的,使用list外层为多个实例。

如果使用@JacksonXmlElementWrapper(useWrapping = true)或者默认 的话,对应的xml应该该为

Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象

ObjectMapper类是Jackson库的主要类。它称为ObjectMapper的原因是因为它将JSON映射到Java对象(反序列化),或将Java对象映射到JSON(序列化)。它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。

三种方式

1.Jackson通过将JSON字段的名称与Java对象中的getter和setter方法相匹配,将JSON对象的字段映射到Java对象中的字段。Jackson删除了getter和setter方法名称的“get”和“set”部分,并将剩余名称的第一个字符转换为小写。

2.Jackson还可以通过java反射进行匹配

3.通过注解或者其它方式进行自定义的序唤脊列化和反序列化程序。

2.Read Object From JSON Reader

3.Read Object From JSON File

本例使用的是文件URL,也可使用一个HTTP URL(如: http://jenkov.com/some-data.json ).

6.Read Object From JSON Byte Array

7.Read Object Array From JSON Array String

ObjectMapper write有三个方法

使用和敏渗Jackson可以读取和写入除JSON之外的其他数据格式:

其中这些数据格式比JSON更紧凑,因此在存储时占用的空间更少,并且读取和写入速度比JSON更快。在以下部分中,我将向您展示如何使用Jackson读取和写入其中一些数据拿亩格式。

CBOR是一种二进制数据格式,它与JSON兼容,但比JSON更紧凑,因此读写速度更快。Jackson ObjectMapper可以像读写JSON一样读写CBOR。为了使用Jackson读取和写入CBOR,您需要为项目添加额外的Maven依赖项。介绍了添加Jackson CBOR Maven依赖关系:

MessagePack是一种文本数据格式,与JSON兼容,但更紧凑,因此读写速度更快。Jackson ObjectMapper可以像读写JSON一样读写MessagePack。为了使用Jackson读写MessagePack,您需要为项目添加额外的Maven依赖项:

YAML是一种文本数据格式,类似于JSON,但使用不同的语法。Jackson ObjectMapper可以像读写JSON一样读写YAML。为了使用Jackson读取和写入YAML,您需要为项目添加额外的Maven依赖项:

ObjectMapper 可以通过自定义解析器来定义解析方法

以下是自定义的反序列化的方法

注册到objectMapper中


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

原文地址: http://outofmemory.cn/tougao/12302222.html

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

发表评论

登录后才能评论

评论列表(0条)

保存