zoukankan      html  css  js  c++  java
  • 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 字段名称不匹配的问题。

  • 相关阅读:
    宿主机( win 7 系统) ping 虚拟机VMware( cent os 6.6 ) 出现“请求超时”或者“无法访问目标主机”的解决方法
    Java实现 LeetCode 23 合并K个排序链表
    Java实现 LeetCode 23 合并K个排序链表
    Java实现 LeetCode 23 合并K个排序链表
    Java实现 LeetCode 22 括号生成
    Java实现 LeetCode 22 括号生成
    Java实现 LeetCode 22 括号生成
    Java实现 LeetCode 21 合并两个有序链表
    Java实现 LeetCode 21 合并两个有序链表
    Java实现 LeetCode 21 合并两个有序链表
  • 原文地址:https://www.cnblogs.com/wdss/p/11832315.html
Copyright © 2011-2022 走看看