Kỹ thuật sử dụng Jackson Framework trong Java

Giới thiệu

Jackson là một thư viện mạnh mẽ và dễ sử dụng cho Java, giúp chuyển đổi giữa đối tượng Java và định dạng JSON/XML một cách hiệu quả. Thư viện này có một số tính năng nổi bật:

  • Hiệu năng cao và ổn định: sử dụng ít bộ nhớ, xử lý tốt các trường hợp JSON lớn hoặc nhỏ
  • Thuận tiện: cung cấp API cao cấp, giảm thiểu các trường hợp sử dụng hàng ngày
  • Không cần tự động hóa ánh xạ: đã tích hợp sẵn ánh xạ cho hầu hết các loại dữ liệu Java
  • JSON sạch: tạo ra JSON nhỏ gọn và dễ hiểu
  • Không phụ thuộc bên ngoài: chỉ cần JDK
  • Được Spring hỗ trợ: Jackson là thư viện mặc định trongSpring Framework

Để sử dụng Jackson, thêm phụ thuộc vào Maven:

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.13.5</version>
</dependency>

1. Ví dụ 1: Kiểm soát quyền truy cập vào các thuộc tính

Sử dụng注解 @JsonProperty để kiểm soát quyền truy cập:

Ví dụ với hai lớp:

Lớp代表 dữ liệu từ CSDL:

public class QuyềnCSDL implements Serializable {
    private Integer id;
    private String mãQuyền;
}

Lớp nhận dữ liệu từ người dùng:

public class YêuCầuQuyền extends QuyềnCSDL {
    @JsonProperty(access = JsonProperty.Access.READ_ONLY)
    @Override
    public Integer getId() {
        return super.getId();
    }
}

2. Ví dụ 2: Chuyển đổi giữa đối tượng và chuỗi JSON

Tạo một công cụ tiện ích:

public class UtilsJSON {
    private static final ObjectMapper mapper = new ObjectMapper();
    public static ObjectMapper getObjectMapper() {
        return mapper;
    }
    public static String ĐốiTượngĐếnJSON(Object obj) {
        try {
            return getObjectMapper().writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            return "{}";
        }
    }
    public static <T> T JSONĐếnĐốiTượng(String json, Class<T> clazz) {
        try {
            return mapper.readValue(json, clazz);
        } catch (JsonProcessingException e) {
            return null;
        }
    }
}

3. Ví dụ 3: Bỏ qua các thuộc tính có giá trị null

Sử dụng注解 @JsonInclude để bỏ qua các thuộc tính null:

@ApiModel(
        value = "Dữ liệu phản hồi JSON",
        description = "Dùng cho các yêu cầu AJAX,	ok xác định dữ liệu có thành công không"
)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class KếtQuảAjax<T> implements Serializable {
    static final long serialVersionUID = 1L;
    @ApiModelProperty("Mã trạng thái")
    private int mãTrạngThai;
    @ApiModelProperty("Thành công?")
    private boolean thànhCông;
    @ApiModelProperty("Thông báo")
    private String thôngBáo;
    @ApiModelProperty("Dữ liệu")
    private T dữLiệu;
    @ApiModelProperty("Dữ liệu phụ thêm")
    private HashMap<String, Object> dữLiệuPhụ;
}

Khi serialize, các thuộc tính null sẽ không xuất hiện trong JSON.

Thẻ: Java Jackson JSON UtilsJSON QuyềnCSDL

Đăng vào ngày 26 tháng 5 lúc 21:28