Rumah >Java >javaTutorial >Bagaimana untuk Membuat Deserializer JSON Tersuai untuk Gson?

Bagaimana untuk Membuat Deserializer JSON Tersuai untuk Gson?

Barbara Streisand
Barbara Streisandasal
2024-12-10 11:53:14455semak imbas

How to Create a Custom JSON Deserializer for Gson?

Penyahserialisasi JSON Tersuai untuk Gson

Apabila menerima data JSON dengan struktur tersuai, proses penyahserikatan lalai Gson mungkin tidak mencukupi. Dalam kes sedemikian, penyahserialisasi tersuai diperlukan.

Pertimbangkan kelas Java berikut yang mewakili pengguna:

public class User {
    int id;
    String name;
    Timestamp updateDate;
}

Dan struktur JSON yang mewakili senarai pengguna:

[{"id":1,"name":"Jonas","update_date":"1300962900226"},
{"id":5,"name":"Test","date_date":"1304782298024"}]

Untuk menyahsiri JSON ini menjadi contoh Pengguna, penyahserialisasi tersuai boleh dilakukan ditakrifkan:

import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import java.lang.reflect.Type;
import java.sql.Timestamp;

public class UserDeserializer implements JsonDeserializer<User> {
    @Override
    public User deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
        throws JsonParseException {
        long time = json.getAsJsonPrimitive().getAsLong();
        return new User(
            json.get("id").getAsInt(),
            json.get("name").getAsString(),
            new Timestamp(time));
    }
}

Penyahserialisasi ini menghuraikan JSON ke dalam tika Pengguna, dengan mengambil kira nama medan yang ditentukan dan penghuraian cap masa tersuai.

Untuk menggunakan penyahserialisasi ini pada tika Gson, gunakan kaedah registerTypeAdapter:

GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(User.class, new UserDeserializer());
Gson gson = gsonBuilder.create();

Kini, JSON boleh dinyahsiri ke dalam senarai daripada tika Pengguna menggunakan tika Gson yang diubah suai.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Deserializer JSON Tersuai untuk Gson?. 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