Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Boleh Mengabaikan Medan Secara Selektif Semasa Pensirian JSON Semasa Masih Membenarkan Penyahserikatan?

Bagaimanakah Saya Boleh Mengabaikan Medan Secara Selektif Semasa Pensirian JSON Semasa Masih Membenarkan Penyahserikatan?

DDD
DDDasal
2024-11-25 00:07:21664semak imbas

How Can I Selectively Ignore Fields During JSON Serialization While Still Allowing Deserialization?

Selective @JsonIgnore for Serialization

Apabila menggunakan rangka kerja siri/deserialisasi JSON, adalah berguna untuk mengabaikan medan tertentu secara terpilih untuk operasi tertentu. Dalam kes kata laluan, selalunya wajar untuk mengecualikannya daripada keluaran bersiri tetapi masih membenarkannya dinyahsiri.

Konteks Disediakan

Objek pengguna disiri dan deserialized mempunyai sifat "kata laluan". @JsonIgnore telah digunakan pada harta ini untuk menghalangnya daripada disertakan dalam respons JSON bersiri. Walau bagaimanapun, ini juga menyekat penyahserialisasian kata laluan, menjadikan pendaftaran pengguna mustahil.

Penyelesaian

Spring JSONView, yang menggunakan Jackson secara dalaman, menyediakan pelbagai kaedah untuk mengawal siri/ penyahserikatan. Untuk senario khusus ini, dua pendekatan disyorkan:

Versi Jackson < 1.9

  • Kaedah Pemberi Anotasi: Tambahkan @JsonAbaikan pada kaedah pemeroleh kata laluan. Ini boleh menghalang kata laluan daripada bersiri tanpa menjejaskan penyahserikatan.

Versi Jackson >= 1.9

  • Argumen Anotasi ReadWrite: Gunakan JsonProperty dengan argumen akses untuk menentukan akses baca atau tulis sahaja. Contohnya:
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
  • Anotasi Penetap: Anotasi kaedah penetap untuk sifat kata laluan dengan @JsonProperty tanpa menyatakan argumen akses. Ini akan menunjukkan bahawa harta itu adalah tulis sahaja.

Nota Tambahan

Penyelesaian ini secara khusus menyasarkan pengecualian terpilih untuk bersiri sambil membenarkan penyahserikan. Untuk senario lain di mana topeng penyahserialisasian dikehendaki, pendekatan alternatif mungkin diperlukan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengabaikan Medan Secara Selektif Semasa Pensirian JSON Semasa Masih Membenarkan 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