Annotation @JsonIgnore ของ Jackson ใช้สำหรับ เพิกเฉยต่อ คุณสมบัติ (property) หรือ ฟิลด์ (field) บางอย่างของอ็อบเจกต์ Java คุณสมบัตินั้นจะถูกเพิกเฉยทั้งตอนอ่าน JSON เข้าสู่อ็อบเจกต์ Java และตอนเขียนอ็อบเจกต์ Java เป็น JSON เราสามารถใช้เมธอด readValue() และ writeValueAsString() ของคลาส ObjectMapper เพื่ออ่าน JSON เป็น Java Object และเขียน Java object เป็น JSON
ไวยากรณ์
@Target(value={ANNOTATION_TYPE,METHOD,CONSTRUCTOR,FIELD})
@Retention(value=RUNTIME)
public @interface JsonIgnore
ตัวอย่างโค้ด
import java.io.*;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
public class JsonIgnoreTest {
public static void main(String[] args) throws IOException {
Customer customer = new Customer("110", "Surya Kiran", "Chennai");
System.out.println(customer);
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(customer);
System.out.println("JSON: " + jsonString);
System.out.println("---------");
jsonString = "{\"id\":\"120\",\"name\":\"Devaraj\", \"address\":\"Banglore\"}";
System.out.println("JSON: " + jsonString);
customer = mapper.readValue(jsonString, Customer.class);
System.out.println(customer);
}
}
// คลาส Customer
class Customer {
private String id;
private String name;
@JsonIgnore
private String address;
public Customer() {}
public Customer(String id, String name, String address) {
this.id = id;
this.name = name;
this.address = address;
}
public String getId() { return id; }
public String getName() { return name; }
public String getAddress() { return address; }
@Override
public String toString() {
return "Customer [id=" + id + ", name=" + name + ", address=" + address + "]";
}
}
ผลลัพธ์
Customer [id=110, name=Surya Kiran, address=Chennai]
JSON: {"id":"110","name":"Surya Kiran"}
---------
JSON: {"id":"120","name":"Devaraj", "address":"Banglore"}
Customer [id=120, name=Devaraj, address=null]