json常用的注解
json注解:
1、@JsonIgnoreProperties:
此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
写法将此标签加在model 类的类名上 ,可以多个属性也可以单个属性
//生成json时将name和age属性过滤 @JsonIgnoreProperties({"name"},{"age"}) public class user { private String name; private int age; }
2、@JsonIgnore:(常用注解)
此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。
//生成json 时不生成age 属性 public class user { private String name; @JsonIgnore private int age; }
3、@JsonFormat:(常用注解)
此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如:
public class User{
@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)
private Date date;
}
4、@JsonSerialize:
此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。
5、@JsonDeserialize:
此注解用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的@JsonSerialize
6、@Transient
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则ORM框架默认其注解为@Basic;
//表示该字段在数据库表中没有 @Transient public int getAge() { return 1+1; }
6、@JsonIgnoreType:
标注在类上,当其他类有该类作为属性时,该属性将被忽略。
7、@JsonProperty
@JsonProperty 可以指定某个属性和json映射的名称。例如我们有个json字符串为{“user_name”:”aaa”},
而java中命名要遵循驼峰规则,则为userName,这时通过@JsonProperty 注解来指定两者的映射规则即可。这个注解也比较常用。
public class SomeEntity { @JsonProperty("user_name") private String userName; }
只在序列化情况下生效的注解
1. @JsonPropertyOrder
在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonPropertyOrder 可以指定属性在 json 字符串中的顺序。
2. @JsonInclude
在将 java pojo 对象序列化成为 json 字符串时,使用 @JsonInclude 注解可以控制在哪些情况下才将被注解的属性转换成 json,例如只有属性不为 null 时。
@JsonInclude(JsonInclude.Include.NON_NULL)
这个注解放在类头上,返给前端的json里就没有null类型的字段,即实体类与json互转的时候 属性值为null的不参与序列化。
另外还有很多其它的范围,例如 NON_EMPTY、NON_DEFAULT等
在反序列化情况下生效的注解
1.@JsonSetter
@JsonSetter 标注于 setter 方法上,类似 @JsonProperty ,也可以解决 json 键名称和 java pojo 字段名称不匹配的问题。
最新文章
- System.Diagnostics.Process.Star的用法
- maven 入门
- HDU3923-Invoker-polya n次二面体
- MySQL 绿色版(zip) 安装
- 【转】C/C++ struct/class/union内存对齐
- Entity Framework 学习第二天 续
- 【Git - 基础篇】如何快速有效的管理你的代码 - 安装和配置
- Paxos算法(转)
- JQuery的几种页面加载完执行三种方式
- Javascript学习5 - 函数
- Javascript多线程引擎(六)
- mongo 初级使用
- quartz.net 3.x 使用总结
- jarvis level6_x64堆溢出unlink拾遗
- TensorFlow——循环神经网络基本结构
- 【DWM1000】 code 解密5一ACHOR 第一次回家Main 函数
- 安卓——Activity生命周期、
- Eclipse代码注释模板-code template
- Spring MVC - 拦截器实现 和 用户登陆例子
- Nagios自定义扩展