1常用的框架 阿里的fastjson,谷歌的gson
javabean序列化json,性能Jackson>fastJson>Gson>Json
測試方法:循環序一百萬次,看誰先完成
jackson fastjson gson類各有優缺點,但是優化無非是空間換時間,運行速度很快,但是cpu溫度較高,負載較大;或者空間換時間,運行效率很低,但是性能穩定
2jackson的處理和關閉
指定字段不返回:@JsonIgore
指定日期樣式 @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
空字段不返回 @JsonInclude(Include.NON_NULL)
指定別名:@JsonProperty
上例子:
2.1創建一個高管類Executives:
package com.example.demo.bean;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Executives {
/**
* 姓名
*/
private String name;
/**
* 性別
* @JsonIgnore不返回字段
*/
@JsonIgnore
private String sex;
/**
* 工作
*/
private String work;
/**
* 住址
*/
private String address;
/**
* 存款
* @JsonProperty("account") 不返回真實的字段給別人,返回別名給別人
*/
@JsonProperty("account")
private int deposit;
/**
* 創建時間
* @JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8") 轉換時間格式
*/
@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
private Date createTime;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getWork() {
return work;
}
public void setWork(String work) {
this.work = work;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getDeposit() {
return deposit;
}
public void setDeposit(int deposit) {
this.deposit = deposit;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Executives(String name, String sex, String work, String address, int deposit, Date createTime) {
super();
this.name = name;
this.sex = sex;
this.work = work;
this.address = address;
this.deposit = deposit;
this.createTime = createTime;
}
}
2.2創建一個TestJsonController,用來測試返回的json數據
package com.example.demo.controller;
import java.util.Date;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.bean.Executives;
@RestController
public class TestJsonController {
@GetMapping("/testJson")
public Object testJson() {
return new Executives("李明", "男", "程序員", "湖北省武漢市青山區", 9000, new Date());
}
}
2.3然后run application后,通過postman去請求接口
@JsonIgore 忽略了性別
@JsonProperty(“account”)對字段存款deposit引用了別名account
@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8") 引用了正常的時間樣式