@JsonPropertyOrder({ "name", "id" })
指定 序列化属性的顺序
@JsonPropertyOrder(alphabetic=true)
按字母顺序对属性进行排序
@JsonRawValue
属性 注释可以 指示 Jackson 完全按原样序列化 。
这个注解可以将一个对象中的 json 字符串序列换成 json 对象
@JsonValue
通过其名称进行序列化
通常用于枚举类的转换
@JsonRootName(value = "user")
可以在 jison 对象外再包裹一层,上面的这注解会在原来的对象外层增加一个 user 的根对象
@JsonSerialize(using = CustomDateSerializer.class)
自定义 Jackson 序列化
public class CustomDateSerializer extends StdSerializer<Date> {
private static SimpleDateFormat formatter
= new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
public CustomDateSerializer() {
this(null);
}
public CustomDateSerializer(Class<Date> t) {
super(t);
}
@Override
public void serialize(
Date value, JsonGenerator gen, SerializerProvider arg2)
throws IOException, JsonProcessingException {
gen.writeString(formatter.format(value));
}
}
@JsonCreator
序列化时如果本对象没有对应的字段,可以在类的构造器上使用该注解,指定对应关系
@JacksonInject
表示属性将从注入而不是从 JSON 数据中获取其值
public class BeanWithInject {
@JacksonInject
public int id;
public String name;
}
@Test
public void whenDeserializingUsingJsonInject_thenCorrect()
throws IOException {
String json = "{\"name\":\"My bean\"}";
InjectableValues inject = new InjectableValues.Std()
.addValue(int.class, 1);
BeanWithInject bean = new ObjectMapper().reader(inject)
.forType(BeanWithInject.class)
.readValue(json);
assertEquals("My bean", bean.name);
assertEquals(1, bean.id);
}
@JsonAnySetter
迷
@JsonSetter
反序列化时如果本对象没有对应的字段,可以在类的构造器上使用该注解,指定对应关系
@JsonDeserialize
自定义反序列化器。
public class EventWithSerializer {
public String name;
@JsonDeserialize(using = CustomDateDeserializer.class)
public Date eventDate;
}
public class CustomDateDeserializer
extends StdDeserializer<Date> {
private static SimpleDateFormat formatter
= new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
public CustomDateDeserializer() {
this(null);
}
public CustomDateDeserializer(Class<?> vc) {
super(vc);
}
@Override
public Date deserialize(
JsonParser jsonparser, DeserializationContext context)
throws IOException {
String date = jsonparser.getText();
try {
return formatter.parse(date);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
@JsonAlias
定义 一个或多个替代名称,适用于在反序列化时 pojo 匹配多个不确定的名称的 json 对象时使用
@JsonIgnoreProperties({ "id" })
是一个类级别的注释用于标记 Jackson 将忽略的属性或属性列表
@JsonIgnore
标记要在字段级别忽略的属性
@JsonIgnoreType
标记要忽略的带注释类型的所有属性,常用于内部类
@JsonInclude(Include.NON_NULL)
排除具有空/null/默认值的属性,用于类上
@JsonAutoDetect
覆盖 哪些属性可见和哪些不可见,比如启用序列化私有属性 JsonAutoDetect(fieldVisibility = Visibility.ANY)
Jackson 多态类型处理
@JsonTypeInfo – 指明序列化中要包含的类型信息的详细信息
@JsonSubTypes – 表示注解类型的子类型
@JsonTypeName – 定义用于注释类的逻辑类型名称
@JsonProperty
序列化/反序列化属性 名称 当我们处理非标准的 getter 和 setter
@JsonFormat
指定序列化日期/时间值时的格式
@JsonUnwrapped
序列化/反序列化时应该展开/展平的值
@JsonView
将包含属性以进行序列化/反序列化的视图,可以通过该注解控制需要展示的 json 数据,分组展示
@JsonManagedReference @JsonBackReference
可以处理父/子关系 并解决循环。
@JsonIdentityInfo
可以处理无限递归时的 json 问题
@JsonFilter
可以指定在序列化期间使用的过滤器,可以灵活的控制序列化的数据的多少
@JacksonAnnotationsInside
创建自定义 Jackson 注释,可以将多个注解形成一组,从而方便使用
// https://www.baeldung.com/jackson-annotations
标签:常用,jackson,class,json,注解,序列化,public,属性 From: https://www.cnblogs.com/manastudent/p/16665669.html