@JsonIgnore注解
时间: 2024-01-10 07:18:43 浏览: 179
@JsonIgnore是一个Jackson库提供的注解,用于在序列化和反序列化Java对象时忽略指定的属性。当我们在使用Jackson库将Java对象转换为JSON字符串时,如果某些属性不需要被序列化到JSON字符串中,我们可以在这些属性上添加@JsonIgnore注解,这样Jackson库就会忽略这些属性。同样地,当我们从JSON字符串反序列化为Java对象时,如果JSON字符串中包含了某些属性,但是我们不需要将这些属性赋值给Java对象的对应属性,我们也可以在Java对象的对应属性上添加@JsonIgnore注解,这样Jackson库就会忽略这些属性。
需要注意的是,@JsonIgnore注解只能用于忽略Java对象中的属性,而不能用于忽略Java对象中的方法或者类。如果我们需要忽略整个类或者某个方法,可以使用其他的注解来实现。
相关问题
@JsonIgnore注解的作用
@JsonIgnore注解的作用是在Json序列化过程中忽略某个属性。当应用在类的属性或方法上时,该属性或方法在生成Json时将被忽略,即不会在生成的Json中包含该属性或方法。这个注解通常用于需要隐藏某些敏感信息或不需要在Json中展示的属性。例如,在一个User类中,可以使用@JsonIgnore注解来忽略password属性,这样在生成Json时就不会包含password属性。\[1\]如果使用的是fastJson,可以尝试使用@JSONField(serialize = false)注解来实现同样的效果。\[2\]
#### 引用[.reference_title]
- *1* [@JsonIgnore注解的作用](https://blog.csdn.net/weixin_52725999/article/details/118178219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [@JsonIgnore的作用和使用](https://blog.csdn.net/qq_39158126/article/details/84334835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
@Data @TableName("INFO_CATE") public class Cate { @JsonSerialize(using= ToStringSerializer.class) private Long id; private String name; private Integer sort; @TableField("is_active") private Boolean active; @JsonIgnore @TableField("is_deleted") private Boolean deleted; @JsonIgnore @TableField(fill = FieldFill.INSERT, select = false) private LocalDateTime createTime; @JsonIgnore @TableField(fill = FieldFill.INSERT_UPDATE, select = false) private LocalDateTime updateTime; }
这段代码是一个使用了 Lombok 注解的实体类,并且使用了 MyBatis Plus 的注解进行数据库映射。让我为您解释一下每个注解的作用:
- `@Data`:这是 Lombok 注解之一,它会自动生成 `toString()`、`equals()`、`hashCode()`、`getter` 和 `setter` 等方法。
- `@TableName("INFO_CATE")`:这是 MyBatis Plus 注解,用于指定实体类对应的数据库表名。
- `@JsonSerialize(using = ToStringSerializer.class)`:这是 Jackson 注解,用于指定序列化时使用的自定义序列化器,将 Long 类型的 id 序列化为字符串。
- `@TableField("is_active")`:这是 MyBatis Plus 注解,用于指定实体类字段对应的数据库列名。
- `@JsonIgnore`:这是 Jackson 注解,用于指定在序列化和反序列化过程中忽略该字段。
- `@TableField(fill = FieldFill.INSERT, select = false)`:这是 MyBatis Plus 注解,用于指定在插入数据时填充该字段的值,并且在查询时不查询该字段。
- `private LocalDateTime createTime;` 和 `private LocalDateTime updateTime;`:这两个字段使用了 `@TableField` 注解,默认情况下 MyBatis Plus 会自动填充这两个字段的值为当前时间。
通过以上注解的配置,可以方便地实现实体类与数据库表之间的映射和操作。希望这个解答能对您有所帮助!如果您还有其他问题,请随时提问。
阅读全文