Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Secara Selektif Mengecualikan Medan daripada Pensiri JSON Tanpa Menjejaskan Penyahserikatan?

Bagaimanakah Saya Boleh Secara Selektif Mengecualikan Medan daripada Pensiri JSON Tanpa Menjejaskan Penyahserikatan?

DDD
DDDasal
2024-11-24 13:28:12537semak imbas

How Can I Selectively Exclude Fields from JSON Serialization Without Affecting Deserialization?

Aplikasi Selektif @JsonIgnore: Menangani Pengecualian Pensirian sahaja

Semasa pertukaran data dengan pelayan, objek pengguna mungkin mengandungi maklumat sensitif yang harus disembunyikan daripada pelanggan semasa bersiri. Pendekatan yang sering digunakan ialah menggunakan anotasi @JsonIgnore untuk menyembunyikan sifat sensitif. Walau bagaimanapun, ini juga boleh mengganggu penyahserialisasian, mewujudkan cabaran dalam senario tertentu.

Memahami Isu

Anotasi @JsonIgnore pada harta menghalang kemasukannya dalam siri JSON. Walau bagaimanapun, jika sifat yang sama diperlukan semasa penyahserikatan (cth., untuk membuat akaun pengguna), pengecualian menjadi bermasalah.

Pengecualian Terpilih dengan @JsonIgnore

Untuk menyelesaikannya isu ini, dua pendekatan berbeza boleh diambil bergantung pada versi Jackson yang digunakan:

Jackson versi sebelum 1.9:

  • Menggunakan @JsonIgnore pada Getter: Menganotasi hanya kaedah getter membolehkan harta itu disertakan semasa penyahserilan dan dikecualikan semasa penyirian.

Jackson versi 1.9 dan kemudian:

  • @JsonProperty dengan READ_ONLY: Dengan menambahkan argumen anotasi @JsonProperty(access = JsonProperty.Access.READ_ONLY) pada setter, anda boleh menentukan bahawa harta hanya boleh ditulis dan dikecualikan semasa siri.

Contoh:

Pertimbangkan objek pengguna dengan medan kata laluan:

@JsonIgnore
private String password;

// Setter with READ_ONLY access (Jackson 1.9 and later)
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public void setPassword(String password) {
    this.password = password;
}

Nota:

  • Menggunakan READ_ONLY memastikan kata laluan hanya digunakan untuk penyahserialisasian.
  • Kedua-dua pendekatan telah disahkan dan berfungsi seperti yang dimaksudkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Secara Selektif Mengecualikan Medan daripada Pensiri JSON Tanpa Menjejaskan Penyahserikatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn