Computer >> Máy Tính >  >> Lập trình >> Java

Tầm quan trọng của chú thích @JsonFilter trong Java?


@JsonFilter chú thích được sử dụng để xác định bộ lọc tùy chỉnh để tuần tự hóa các đối tượng Java. Chúng tôi cần sử dụng FilterProvider lớp để xác định một bộ lọc và lấy thể hiện bộ lọc thực tế. Bây giờ, bộ lọc được định cấu hình bằng cách chỉ định FilterProvider sang ObjectMapper lớp học.

Cú pháp

@Target(value={ANNOTATION_TYPE,TYPE,METHOD,FIELD,PARAMETER})
@Retention(value=RUNTIME)
public @interface JsonFilter

Trong ví dụ dưới đây, customFilter có thể được khai báo như một đối số cho @JsonFilter chú thích chỉ trích xuất tên và lọc ra các thuộc tính khác của bean.

Ví dụ

import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
public class JsonFilterAnnotationTest {
   public static void main(String args[]) throws JsonProcessingException {
      ObjectMapper mapper = new ObjectMapper();
      FilterProvider filterProvider = new SimpleFilterProvider().addFilter("customFilter",   SimpleBeanPropertyFilter.filterOutAllExcept("empName"));
      String jsonString = mapper.writer(filterProvider).writeValueAsString(new FilterBean());
      System.out.println(jsonString);
   }
}
@JsonFilter("customFilter")
class FilterBean {
   public int empId = 110;
   public String empName = "Raja Ramesh";
   public String gender = "male";
}

Đầu ra

{"empName":"Raja Ramesh"}