0
点赞
收藏
分享

微信扫一扫

Jackson 在接口请求响应体中的应用


常用注解

  • @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注解使用​​


举报

相关推荐

0 条评论