Saya telah melihat Jackson, tetapi sepertinya saya harus mengubah Peta menjadi JSON, dan kemudian hasil JSON ke POJO.
Apakah ada cara untuk mengonversi Peta secara langsung ke POJO?
json
dictionary
jackson
pojo
pengguna86834
sumber
sumber
compile 'com.fasterxml.jackson.core:jackson-databind:2.7.3'
Map<String, Object>
instance?Solusi dengan Gson :
sumber
map.toString()
memberikan string yang benar? Implementasi daritoString()
tidak menjamin format tertentu.Ya, sangat mungkin untuk menghindari konversi antara ke JSON. Menggunakan alat salin-dalam seperti Dozer Anda dapat mengkonversi peta langsung ke POJO. Ini adalah contoh sederhana:
Contoh POJO:
Contoh kode konversi:
Keluaran:
Catatan: Jika Anda mengubah peta sumber Anda menjadi
Map<String, Object>
maka Anda dapat menyalin lebih dari properti bersarang mendalam (denganMap<String, String>
Anda hanya mendapatkan satu tingkat).sumber
jika Anda memiliki jenis generik di kelas Anda Anda harus menggunakan
TypeReference
denganconvertValue()
.Anda juga dapat menggunakannya untuk mengubah pojo menjadi
java.util.Map
kembali.sumber
Saya telah menguji Jackson dan BeanUtils dan menemukan bahwa BeanUtils jauh lebih cepat.
Di mesin saya (Windows8.1, JDK1.7) saya mendapat hasil ini.
sumber
Map
berisimap.put("data","2016-06-26")
danTestClass
memiliki bidangprivate LocalDate data;
, maka Jackson akan bisa menyelesaikan sesuatu, sedangkan BeanUtils akan gagal.ObjectMapper
instance adalah proses yang menghabiskan waktu / sumber daya, dan disarankan untuk menggunakan kembali satu instance mapper daripada membuatnya lagi setiap kali. Saya pikir akan lebih baik untuk mengeluarkannya dari ujianJawaban yang diberikan sejauh ini menggunakan Jackson sangat baik, tetapi tetap Anda bisa memiliki fungsi util untuk membantu Anda mengonversi yang berbeda
POJO
sebagai berikut:sumber
User.class POJO
App.class menguji contoh ini
sumber
@Hamedz jika menggunakan banyak data, gunakan Jackson untuk mengonversi data ringan, gunakan apache ... TestCase:
sumber