Rumah > Java > javaTutorial > Bagaimanakah saya Boleh Menyahserialisasikan Struktur JSON Tersuai dengan Cekap dengan Gson di Java?

Bagaimanakah saya Boleh Menyahserialisasikan Struktur JSON Tersuai dengan Cekap dengan Gson di Java?

Barbara Streisand
Lepaskan: 2024-12-19 20:50:13
asal
443 orang telah melayarinya

How Can I Efficiently Deserialize Custom JSON Structures with Gson in Java?

Penyahserikatan JSON Tersuai dengan Gson

Di Java, Gson ialah perpustakaan popular untuk penghuraian dan penyirian JSON. Apabila bekerja dengan struktur JSON yang kompleks, anda mungkin perlu mentakrifkan penyahserialisasi tersuai untuk mengendalikan format data tertentu.

Pertimbangkan contoh berikut di mana anda mempunyai kelas Pengguna dan menerima senarai JSON yang mengandungi objek pengguna.

public class User {
    int id;
    String name;
    Timestamp updateDate;
}
Salin selepas log masuk
[{"id":1,"name":"Jonas","update_date":"1300962900226"},
{"id":5,"name":"Test","date_date":"1304782298024"}]
Salin selepas log masuk

Untuk menentukan penyahserialisasi tersuai, laksanakan antara muka JsonDeserializer dan sediakan kaedah penyahserialisasian. Walau bagaimanapun, kod yang disediakan dalam soalan mempunyai beberapa isu:

  • Menggunakan getAsInt() dan getAsJsonPrimitive() adalah tidak sesuai kerana update_date dijangka menjadi rentetan.
  • Menyahserialisasi tarikh_update menggunakan (Timestamp)context.deserialize adalah tidak betul kerana ia menganggap nilai JSON sudah pun menjadi Cap Masa objek.

Pendekatan yang lebih sesuai melibatkan memanfaatkan sokongan terbina dalam Gson untuk dasar penamaan medan dan penyahserialisasi tersuai. Ini mengurangkan keperluan untuk penghuraian manual dan memudahkan proses penyahserikatan:

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
gsonBuilder.registerTypeAdapter(Timestamp.class, new TimestampDeserializer());
Salin selepas log masuk

Dalam penyahserialisasi tersuai, kaedah penyahserikatan menghuraikan nilai JSON sebagai rentetan dan mencipta objek Cap Masa:

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

Dengan mendaftarkan penyahserialisasi tersuai, Gson akan mengendalikan penyahserikatan update_date secara automatik sebagai Cap Masa menggunakan logik yang ditakrifkan dalam TimestampDeserializer.

Pendekatan ini menyediakan kaedah yang lebih ringkas dan mudah ralat untuk penyahserikatan JSON tersuai dengan Gson.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Menyahserialisasikan Struktur JSON Tersuai dengan Cekap dengan Gson di Java?. 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