我正在参加「掘金·启航计划」
@JsonNaming(SnakeCaseStrategy.class) 指定Json字段名映射策略为蛇形大小写策略。缺省则直接使用Bean属性名 可用的命名映射策略还有: KebabCaseStrategy: 肉串策略 - 单词小写,使用连字符’-‘连接 SnakeCaseStrategy: 蛇形策略 - 单词小写,使用下划线’_'连接;即老版本中的LowerCaseWithUnderscoresStrategy LowerCaseStrategy: 小写策略 - 简单的把所有字母全部转为小写,不添加连接符 UpperCamelCaseStrategy: 驼峰策略 - 单词首字母大写其它小写,不添加连接符;即老版本中的PascalCaseStrategy
例: 转换转驼峰:
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) 上面这个注解放在实体类上, 可以将
private String page_no;
变成
private String pageNo; @JsonIgnoreProperties({“id”, “created”, “steps”, “copy”, “stepList”}) 类注解,指定序列化时忽略这些属性,可以用于覆盖超类中默认输出的属性
@JsonInclude(Include.NON_EMPTY) 仅在属性不为空时序列化此字段,对于字符串,即null或空字符串
@JsonIgnore 序列化时忽略此字段
@JsonProperty(value = “user_name”) 指定序列化时的字段名,默认使用属性名
@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”, timezone = “GMT+8”) 指定Date类字段序列化时的格式
例:
@JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd")
private LocalDate reportDate;
@JsonUnwrapped(prefix = “user_”) private User user; 把成员对象中的属性提升到其容器类,并添加给定的前缀,比如上例中: User类中有name和age两个属性,不使用此注解则序列化为: … “user”: { “name”: “xxx”, “age”: 22 } … 使用此注解则序列化为: … “user_name”: “xxx”, “user_age”: 22, …
@JsonIgnoreType 类注解,序列化时忽略此类
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = “id”) 作用于类或属性上,被用来在序列化/反序列化时为该对象或字段添加一个对象识别码,通常是用来解决循环嵌套的问题
有时候转换使用@JsonAlias失效,可使用package com.alibaba.fastjson.annotation里的@JSONField(name="id")