暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

注解@JsonIgnoreProperties

东神殿下 2021-09-19
5111
SpringBoot项目中定义了很多类,我们在rest返回中直接返回或者在返回对象中使用这些类,spring已经使用jackson自动帮我们完成这些的 to json 。但是有时候自动转的json内容太多,或者格式不符合我们的期望,因此需要调整类的to json过程,或者说希望自定义类的json过程

jackson依赖
    <dependency> 
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</version>
    </dependency>
    复制


    @JsonProperty

    此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty("name")


    对属性名称重命名,比如在很多场景下Java对象的属性是按照规范的驼峰书写,但在数据库设计时使用的是下划线连接方式,此处在进行映射的时候就可以使用该注解。

          @JsonProperty("user_name")
          private String userName;
      复制

      @JsonIgnore

      此注解用于属性或者方法上(最好是方法上),用来完全忽略被注解的字段和方法对应的属性,即便这个字段或方法可以被自动检测到或者还有其他的注解,一般标记在属性或者方法上,返回的Json数据即不包含该属性。

          //使用JsonIgnore注解在生成json数据时,不包含该字段
        @JsonIgnore
            private String info;
        复制


        @JsonIgnoreProperties

        类注解,将这个注解写在类上之后,就会忽略类中不存在的字段。这个注解还可以指定要忽略的字段,例如@JsonIgnoreProperties(value={"userName","info"})



        @JsonFormat

        这个注解可以帮我们完成格式转换。例如对于Date类型字段,如果不适用JsonFormat默认在rest返回的时long,如果我们使用@JsonFormat(timezone="GMT+8,pattern="yyyy-MM-dd HH:mm:ss"),就返回"2021-09-17 15:00:02 "


        @JsonSerialize

        用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。


        @JsonDeserialize

        用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码类似于上面的@JsonSerialize。


        @Jsoninclude

        属性值为null的不参与序列化。例如:@JsonInclude(include.NON_NULL)

        文章转载自东神殿下,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论