jackson 常用注解,比如忽略某些属性,驼峰和下划线互转

摘要:
一般情况下使用JSON只使用了java对象与字符串的转换,但是,开发APP时候,我们经常使用实体类来做转换;这样,就需要用到注解;Jackson默认是针对get方法来生成JSON字符串的,可以使用注解来做一些特殊用途;常见的使用如下:1排除属性@JsonIgnore,一般标记在属性或方法上;作用于序列化与反序列化,在purepojo中使用的比较少,但是在某些富pojo中,比如说由于缓存考虑,我们可

一般情况下使用JSON只使用了java对象与字符串的转换,但是,开发APP时候,我们经常使用实体类来做转换;这样,就需要用到注解;
Jackson默认是针对get方法来生成JSON字符串的,可以使用注解来做一些特殊用途;常见的使用如下:
1 排除属性
@JsonIgnore,一般标记在属性或方法上;作用于序列化与反序列化,在pure pojo中使用的比较少,但是在某些富pojo中,比如说由于缓存考虑,我们可能设置了一个接口,其中有个接口方法叫做getKey,此时默认的序列化/反序列化就会导致key找不到。
2 属性别名
@JsonProperty,序列化/反序列化都有效,早期版本一般用于pojo和mybatis mapper之间在驼峰式和下划线之间转换,在mybatis 3中,已经内置了该规则,可参见http://www.cnblogs.com/zhjh256/p/5814414.html;
3 属性排序
@JsonPropertyOrder,注释在类声明中;这个注解在某些对性能有极端要求且灵活性要求不是那么高场景中,可以一定程度上提升性能。
4 属性格式转换
使用自定义序列化/反序列化来处理;
@JsonSerialize,序列化;
@JsonDeserialize,反序列化;

不过,默认情况下,jackson是不处理注解的,需调用objectMapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector());

需要注意的是:1.9之前仅根据语法确定有效或无效,1.9之后根据javabean的规范确定生效的getter/setter和属性。

免责声明:文章转载自《jackson 常用注解,比如忽略某些属性,驼峰和下划线互转》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇postgresql 查看用户名【原生】CocosCreator apk打包发布 (APPABI、jsc、网易易盾、权限、app名称图标、包名、签名)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# 序列化与反序列化Serialization之Json Xml Binary Soap JavaScript序列化

所谓的序列化其实就是把一个内存中的对象信息转化成一个可以持久化保存的形式,方便保存数据库和文件或着用于传输, 序列化的主要作用是不同平台之间进行通信与信息的传递保存等,常用的有序列化有Json Xml Binary Soap JavaScript序列化等,当然我们也可以使用第三方的序列化类库,第三方的序列化类库可以参照网上的,这里不再赘述, 本文主要介绍J...

Apache Commons Fileupload 反序列化漏洞分析

下面是k8脚本。 # -*- coding: utf-8 -*- # Oracle Weblogic Server (10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3) Deserialization Remote Command Execution Vulnerability (CVE-2018-2628) from __f...

JSON反序列化接口的问题

今天在使用JSON序列化类时出现问题,原来类中有一个接口,在反序列化时不知道接口的实体是什么 public class Device : IComparer { private string _deviceid; private string _devicename; private string _deviceaddr = "01"; private s...

fastjson如何指定字段不序列化

fastjson是一款由阿里巴巴提供的性能出色的json序列化与反序列化库,而且使用很方便,我们可以使用JSON.toJSONString(object)将一个对象序列化为json格式,但是如果我们不想把一个类的所有成员都序列化怎么办呢。 解决这个问题有两种方式: 方式一、给不想被序列化的属性增加transient属性---java特性 方式二、给不想被...

DRF 序列化组件

Serializers 序列化组件 Django的序列化方法 classBooksView(View): defget(self, request): book_list = Book.objects.values("id", "title", "chapter", "pub_time", "publisher")...

phpredis中incr以及decr等自增命令出现的问题

在做项目中使用redis的incr以及hincrby自增时,出现自增失败,set之后的数据,无法自增,当redis中不存在该key时,直接用incr是成功的。查找了原因,是因为phpredis初始化的时候,设置了php序列化,即: $redis->setOption( Redis::OPT_SERIALIZER, Redis::SERIALIZER_...