赞
踩
@JsonIgnore注解是Jackson库中的一个注解,用于在实体类向前台返回数据时忽略不想传递给前台的属性或接口。当你在Java类的某个属性或方法上添加@JsonIgnore注解时,Jackson在将对象序列化为JSON时将会忽略这个属性或方法,也就是说这个属性或方法将不会出现在生成的JSON字符串中。这对于那些你不希望暴露给前端的属性(如密码、敏感信息等)非常有用。
例如,在User类中,如果你有一个password属性,并且你不希望在前台看到这个属性,你可以在password属性上添加@JsonIgnore注解。
此外,还有一个类似的注解叫做@JsonIgnoreProperties,这是一个类注解,用于在json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。你可以在类上添加这个注解,并指定要忽略的属性名列表。
需要注意的是,如果在使用fastJson而不是Jackson作为JSON处理库,那么@JsonIgnore注解可能不会生效。在fastJson中,你需要使用@JSONField(serialize = false)注解来达到相同的效果。
@JSONField注解是阿里巴巴fastjson库中的注解,用于控制Java对象与JSON字符串之间的转换。它可以用于控制序列化和反序列化过程中的一些细节,例如日期格式、序列化顺序、字段名称等。
@JSONField注解可以作用在方法、属性以及方法中的参数上。在JSONField注解中,name属性用来指定JSON串中key的名称。例如,@JSONField(name = “id”)表示将Java对象中的userId字段映射到JSON字符串中的"id"字段。
此外,@JSONField注解还有其他一些常用的属性,如:
通过使用@JSONField注解,你可以灵活地控制Java对象与JSON字符串之间的转换,实现更复杂的序列化和反序列化需求。
@JsonInclude 是 Jackson 库中的一个注解,它用于定制在序列化(即将 Java 对象转换为 JSON 字符串)过程中哪些属性应该被包含在内。这个注解可以用于类、方法或字段,以定义如何包含字段值。
Jackson 提供了几种不同的 Include 策略:
例如,如果你有一个类并且你只想在序列化时包含非空的字段,你可以这样做:
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MyObject {
private String name;
private Integer age;
// getters and setters
}
在这个例子中,如果 name 或 age 字段的值为 null,那么在序列化 MyObject 的实例为 JSON 字符串时,这些字段将不会被包含在内。
这个注解非常有用,因为它可以帮助你控制生成的 JSON 字符串的大小和可读性,尤其是在你有很多可选字段或嵌套对象的情况下。
@Transient注解是Java EE规范提供的javax.persistence包定义的注解之一。这个注解的作用是指定该属性或字段不是永久的,即告诉MyBatis不需要将该字段映射为数据库表的列,也就是标记实体类中不需要持久化到数据库的字段。
@Transient注解的使用不仅限于实体类上有@Table注解的属性,它可以用在任何实体类的字段或者方法上。无论实体类是否有@Table注解,只要被@Transient注解标记的字段或方法都会被忽略,不进行数据库映射操作。
此外,@Transient注解也可以用于Java序列化过程中,用于标记不希望序列化的字段。当对象被序列化时,被标记为@Transient的字段将被忽略。
总的来说,@Transient注解的主要作用是在Java EE的持久化和序列化过程中,告诉系统哪些字段或属性不需要被处理。
@Data public class ResourceParam { private String field1; private String field2; private String field3; @Transient public String getTest() { return “string”; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。