Rumah > Java > javaTutorial > Bagaimana untuk Mengecualikan Medan Tertentu daripada Pensirilan Gson tanpa Anotasi?

Bagaimana untuk Mengecualikan Medan Tertentu daripada Pensirilan Gson tanpa Anotasi?

Patricia Arquette
Lepaskan: 2024-12-09 00:51:10
asal
181 orang telah melayarinya

How to Exclude Specific Fields from Gson Serialization without Annotations?

Gson: Mengecualikan Medan Tertentu daripada Pensirian tanpa Anotasi

Mengecualikan medan tertentu daripada bersiri Gson tanpa anotasi boleh menjadi rumit. Begini cara untuk mencapainya menggunakan ExclusionStrategy tersuai:

Custom ExclusionStrategy

Gson menyediakan antara muka ExclusionStrategy yang membolehkan anda menyesuaikan cara medan dikecualikan. Cipta pelaksanaan antara muka ini:

public class FieldExclusionStrategy implements ExclusionStrategy {

    private Pattern pattern;

    public FieldExclusionStrategy(String regex) {
        pattern = Pattern.compile(regex);
    }

    @Override
    public boolean shouldSkipField(FieldAttributes fa) {
        String fieldName = fa.getName();
        return pattern.matcher(fieldName).matches();
    }

    @Override
    public boolean shouldSkipClass(Class<?> clazz) {
        return false;
    }
}
Salin selepas log masuk

Menyesuaikan Pengecualian

Dalam contoh yang disediakan, ExclusionStrategy mengecualikan medan berdasarkan ungkapan biasa yang diberikan. Anda boleh menyesuaikan corak agar sepadan dengan medan yang diingini untuk dikecualikan, seperti country.name.

Menggunakan Strategi Pengecualian

Setelah Strategi Pengecualian ditakrifkan, gunakannya semasa mengkonfigurasi the GsonBuilder:

Gson gson = new GsonBuilder()
    .setExclusionStrategies(new FieldExclusionStrategy("country.name"))
    .create();
Salin selepas log masuk

Penggunaan Contoh

Selepas mengkonfigurasi Gson, anda boleh mensirikan objek Pelajar anda seperti berikut:

String json = gson.toJson(student);
Salin selepas log masuk

Ini akan mengecualikan medan country.name daripada output JSON bersiri.

Nota Tambahan

  • Jika anda mahu kecualikan medan berdasarkan kriteria lain (seperti jenis atau anotasi), anda boleh mengubah suai kaedah shouldSkipField dan shouldSkipClass dengan sewajarnya.
  • Untuk medan dengan jenis yang sama, peraturan pengecualian masih digunakan pada laluan medan tertentu. Dalam kes ini, countryOfBirth.name tidak akan dikecualikan.
  • Untuk mengecualikan keseluruhan jenis, ganti kaedah shouldSkipClass dalam ExclusionStrategy.

Atas ialah kandungan terperinci Bagaimana untuk Mengecualikan Medan Tertentu daripada Pensirilan Gson tanpa Anotasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan