Rumah > Java > javaTutorial > Bagaimana untuk Menulis Deserializer JSON Tersuai dalam Gson untuk Penghuraian Data yang Cekap?

Bagaimana untuk Menulis Deserializer JSON Tersuai dalam Gson untuk Penghuraian Data yang Cekap?

Susan Sarandon
Lepaskan: 2024-12-17 11:26:26
asal
747 orang telah melayarinya

How to Write a Custom JSON Deserializer in Gson for Efficient Data Parsing?

Menulis Penyahserialisasi JSON Tersuai untuk Gson

Apabila berurusan dengan objek JSON, menyahsirikannya ke dalam kelas Java tersuai adalah tugas penting. Gson, penghurai JSON yang popular, membolehkan anda membuat penyahserialisasi tersuai untuk mengendalikan senario tertentu.

Dalam panduan ini, kami akan meneroka cara menulis penyahserialisasi JSON tersuai untuk Gson, menggunakan senario di mana kami mempunyai Java Pengguna kelas yang mewakili maklumat pengguna dan senarai JSON pengguna.

The Masalah

Anda mempunyai senarai JSON objek pengguna yang perlu dinyahsiri ke dalam kelas Pengguna. Walau bagaimanapun, penyahserialisasi tersuai anda tidak berfungsi dengan betul.

Penyelesaian

Untuk menulis penyahserialisasi JSON tersuai untuk Gson, anda boleh melaksanakan antara muka JsonDeserializer dan menyediakan kaedah penyahserikatan . Kaedah ini mengambil elemen JSON, jenis yang sepatutnya dinyahsiri dan konteks penyahserikatan JSON sebagai hujah.

Sebagai contoh, pertimbangkan kod terlaras berikut:

@Override
public User deserialize(JsonElement json, Type type,
                        JsonDeserializationContext context) throws JsonParseException {
    int id = json.getAsJsonObject().get("id").getAsInt();
    String name = json.getAsJsonObject().get("name").getAsString();
    Timestamp updateDate = context.deserialize(json.getAsJsonObject().get("update_date"), Timestamp.class);

    return new User(id, name, updateDate);
}
Salin selepas log masuk

Tambahan Pertimbangan

Anda juga boleh menggunakan pendekatan berbeza untuk meminimumkan penghuraian manual dalam kod anda, seperti yang ditunjukkan di bawah:

public static void main(String[] args) {
    GsonBuilder gsonBuilder = new GsonBuilder();
    gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
    gsonBuilder.registerTypeAdapter(Timestamp.class, new TimestampDeserializer());
    Gson gson = gsonBuilder.create();
    User[] users = gson.fromJson(jsonInput, User[].class);
}

class TimestampDeserializer implements JsonDeserializer<Timestamp> {
    @Override
    public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
            throws JsonParseException {
        long time = Long.parseLong(json.getAsString());
        return new Timestamp(time);
    }
}
Salin selepas log masuk

Pendekatan ini menggunakan TimestampDeserializer untuk mengendalikan penyahsirilan objek Timestamp, meminimumkan penghuraian manual dalam kaedah penyahserikatan.

Atas ialah kandungan terperinci Bagaimana untuk Menulis Deserializer JSON Tersuai dalam Gson untuk Penghuraian Data yang Cekap?. 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