Mengapa anda menghadapi "Gagal melantun untuk menaip" semasa menukar JSON daripada Firebase kepada objek Java?
Firebase menggunakan Jackson untuk memudahkan siri objek Java ke dalam JSON dan penyahserikatannya kembali ke objek Java. Tutorial ini meneroka pelbagai pendekatan untuk menggunakan Jackson dengan Firebase.
Memuatkan Pengguna Lengkap
Untuk memuatkan pengguna daripada Firebase ke dalam Android, seseorang boleh mencipta kelas Java yang mencerminkan struktur JSON :
private static class User { String handle; String name; long stackId; // getters and toString methods }
Kelas ini boleh digunakan dengan a pendengar:
Firebase ref = new Firebase("https://stackoverflow.firebaseio.com/32108969/users"); ref.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot usersSnapshot) { for (DataSnapshot userSnapshot : usersSnapshot.getChildren()) { User user = userSnapshot.getValue(User.class); System.out.println(user.toString()); } } @Override public void onCancelled(FirebaseError firebaseError) { } });
Memuatkan Separa Pengguna
Jika hanya sifat pengguna tertentu yang diminati, seseorang boleh menghilangkan sifat yang tidak diingini daripada kelas Java. Walau bagaimanapun, ini mungkin menyebabkan pengecualian "jenis gagal untuk menyahpantulkan" disebabkan ketidakupayaan Jackson untuk mengecam harta yang ditinggalkan.
Untuk menyelesaikan masalah ini, anotasi @JsonIgnoreProperties boleh digunakan untuk mengarahkan Jackson mengabaikan sifat tertentu:
@JsonIgnoreProperties({ "stackId" }) private static class User { String handle; String name; }
Sebagai alternatif, @JsonIgnoreProperties(ignoreUnknown=true) boleh digunakan untuk mengabaikan semua sifat tidak diketahui.
Menyimpan Separa Pengguna
Kaedah kemudahan boleh ditambah pada kelas Java untuk meningkatkan kefungsiannya. Sebagai contoh, kaedah untuk mendapatkan nama paparan pengguna boleh ditambah:
private static class User { String handle; String name; @JsonIgnore public String getDisplayName() { return getName() + " (" + getHandle() + ")"; } }
Apabila menyimpan pengguna ke Firebase, anotasi @JsonIgnore harus digunakan pada kaedah getDisplayName() untuk menghalang kemasukannya dalam JSON keluaran.
Atas ialah kandungan terperinci Mengapakah saya mendapat ralat \'Gagal melantun untuk menaip\' semasa menukarkan Firebase JSON kepada objek Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!