常用Json框架(Jackson)


比如 Jackson、FastJson、Gson。其中,Jackson效率最高,最常用。

這里以 Jackson 為例。

Jackson處理相關字段

  • 指定字段不返回,比如密碼:@JsonIgnore

  • 指定日期格式:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")

  • 空字段不返回:@JsonInclude(Include.NON_NUll)

  • 指定別名:@JsonProperty

 

實例

給出 User類、controller、啟動類

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private int age;

    private String pwd;

    private String phone;

    private Date createTime;
}

 

@RestController
public class SampleController {

    @GetMapping("/testjson")
    public Object testjson(){
        return new User(111, "abc123", "10001000", new Date());
    } 
}

 

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class XdclassSpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(XdclassSpringbootApplication.class, args);
    }

}

 

測試結果

訪問網頁 http://localhost:8080/testjson,得到如下結果。

{
"age": 111,
"pwd": "abc123",
"phone": "10001000",
"createTime": "2019-07-24T12:50:41.798+0000"
}

 

改變User的屬性,使用Json的注解。

返回的json可能為空串“” 或者 0 或者 [], 但盡量不要null。給 phone 添加 @JsonInclude(JsonInclude.Include.NON_NULL) 注解。

 

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {

    private int age;

    @JsonIgnore
    private String pwd;

    @JsonProperty("account")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String phone;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", locale = "zh", timezone = "GMT+8")
    private Date createTime;
}

 

通常密碼需要保護。結果如下。

{
"age": 111,
"createTime": "2019-07-24 21:02:56",
"account": "10001000"
}

 

如果 phone是null

{
"age": 111,
"createTime": "2019-07-24 21:11:38"
}

 

如果phone是空串""

{
"age": 111,
"createTime": "2019-07-24 21:15:07",
"account": ""
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM