Jackson全面解析--注解全讲解十二(动态添加字段@JsonAppend)

Jackson全面解析--注解全讲解十二(动态添加字段@JsonAppend),第1张

有时候我们需要在不改变类的属性字段的情况下,添加字段,Jackson提供了@JsonAppend注解来实现这个功能,使用方式如下

通过上面的例子可以看到,@JsonAppend提供了两种方式来动态的添加虚拟字段

1 attrs

此种方式需要在序列化时候手动的添加Attribute,如下

om.writerFor(CombineJacksonAnnotation.JsonPropertyPojo.class).withAttribute("age","10").withAttribute("height","12")

2 props

此种方式比较灵活,但是要实现一个VirtualBeanPropertyWriter类即可,如果真的有这种需求,推荐使用第二种方式来实现

一般通过以下五个步骤来完成设计:

(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图来表示这些数据结构

(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。

(3)按以下的规则由输入、输出的数据结构导出程序结构。

1)为每一对在输入数据结构和输出数据结构中有对应关系的单元画一个处理框。

2)为输入和输出数据结构中剩余的数据单元画一个处理框。

3)所有处理框在程序结构图上的位置,应与由它处理的数据单元在数据结构Jackson图上的位置一致。

4)必要时,可以对映射导出的程序结构图进行进一步的细化。

(4)列出基本 *** 作与条件,并把它们分配到程序结构图的适当位置。

(5)用伪码写出程序。

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/bake/11632802.html

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

发表评论

登录后才能评论

评论列表(0条)

保存