常用注解
-
@JsonIgnoreProperties({"prop1", "prop2"})
- 类注解, 在序列化为JSON的时候会忽略 prop1 和 prop2 两个属性
- @JsonIgnoreProperties(ignoreUnknown=true)
- 类注解, 在从JSON反序列化为Java类的时候,会忽略所有没有 Getter 和 Setter 的属性
- @JsonIgnoreType
- 类注解,表示被注解该类型的属性将不会被序列化和反序列化
-
@JsonInclude(JsonInclude.Include.NON_NULL)
- 仅在属性不为空时序列化此字段,对于字符串,即null或空字符串
-
@JsonProperty("message")
- 指定序列化时的字段名,默认使用属性名
-
@JsonAlias
- 只在反序列化时起作用,指定该java属性可以接受的更多名称
-
@JsonIgnore
- 注解用于排除某个属性,这样该属性就不会被Jackson序列化和反序列化
-
@JsonFormat(pattern = "yyyy-MM-dd")
- 格式化日期显示
- @JsonRootName
- 注解用于指定JSON根属性的名称
- @JsonPropertyOrder
- 和 @JsonProperty 的 index 属性类似,指定属性序列化时的顺序
-
@JsonPropertyOrder(value = {"userName","userNo"})
牛刀小试
public class AnswerApp {
public static void main(String[] args) {
AiResponse<String> response = new AiResponse<>();
response.setCode(10000);
response.setDesc("success");
response.setData("opt success");
response.setServerDate(new Date());
ObjectMapper mapper = new ObjectMapper();
// mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
/* 字符串操作 */
// 将对象序列化为字符串
String msg = mapper.writeValueAsString(response);
System.out.println(msg);
// 将字符串反序列化为对象
AiResponse response1 = mapper.readValue(msg, AiResponse.class);
System.out.println(response1);
System.out.println();
/* 文件操作 */
String filePath = "C:\\home\\response.json";
// 将对象序列化到文件
mapper.writeValue(new File(filePath), response);
// 将文件中内容反序列化为对象
AiResponse response2 = mapper.readValue(new File(filePath), AiResponse.class);
System.out.println(response2);
System.out.println();
/* 字节操作 */
// 将对象序列化为字节数组
byte[] bytes = mapper.writeValueAsBytes(response);
// 将字节数组反序列化为对象
AiResponse response3 = mapper.readValue(bytes, AiResponse.class);
System.out.println(response3);
}
}
程序运行结果
{"code":10000,"serverDate":"2019-06-21","message":"success"}
AiResponse(code=10000, desc=success, data=null, serverDate=Fri Jun 21 08:00:00 CST 2019)
AiResponse(code=10000, desc=success, data=null, serverDate=Fri Jun 21 08:00:00 CST 2019)
AiResponse(code=10000, desc=success, data=null, serverDate=Fri Jun 21 08:00:00 CST 2019)
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class AiResponse<T> {
private Integer code;
@JsonProperty("message")
private String desc;
@JsonIgnore
private T data;
@JsonFormat(pattern = "yyyy-MM-dd"/**, timezone="GMT+8"*/)
private Date serverDate;
}
Reference
- Jackson快速入门
- @JsonSerialize注解使用