74-bob: To'plamlarni tanlash


-bo'lim: Gson bilan seriyalashtirish


Download 342.92 Kb.
Pdf ko'rish
bet4/6
Sana24.12.2022
Hajmi342.92 Kb.
#1063446
1   2   3   4   5   6
Bog'liq
dasturlash maruza orginali (2)

75.4-bo'lim: Gson bilan seriyalashtirish 
Gson bilan seriyalashtirish oson va to'g'ri JSON chiqaradi.
E'tibor bering, siz ob'ektlarni dumaloq havolalar bilan ketma-ketlashtira 
olmaysiz, chunki bu cheksiz rekursiyaga olib keladi. 
(Serializatsiya) 
75.7-bo'lim: Jekson bilan maxsus JSON seriyasini 
bekor qilish 
Biz dam olish API-ni JSON formati sifatida ishlatamiz va keyin uni POJO-ga o'chiramiz. 
Jeksonniki 
org.codehaus.jackson.map.ObjectMapper qutidan tashqarida "shunchaki ishlaydi" va biz 
ko'p hollarda hech narsa qilmaymiz. 


Ammo ba'zida bizning shaxsiy ehtiyojlarimizni qondirish uchun bizga maxsus seriyali 
deserializator kerak bo'ladi va bu qo'llanma sizga yordam beradi 
o'zingizning shaxsiy seriyasizizatoringizni yaratish jarayoni. 
Aytaylik, bizda quyidagi ob'ektlar bor. 
final String json = objectMapper.writeValueAsString(dastur); System.out.println(json); 
Yuqoridagi kod quyidagi JSON-ni ishlab chiqaradi 
Endi buning aksini juda oson qilish mumkin. Agar bizda ushbu JSON bo'lsa, biz dastur 
ob'ektini ishlatib o'chirishimiz mumkin 
ObjectMapper quyidagicha - 
Aytaylik, bu haqiqiy holat emas, biz API bilan mos kelmaydigan boshqa JSONga ega 
bo'lamiz. 
Bizning dastur sinfimiz. 
JSON satriga qarang, ko'rishingiz mumkin, unda owenId bo'lgan boshqa maydon bor. 
Endi, agar siz ushbu JSON-ni avvalgidek ketma-ketlashtirmoqchi bo'lsangiz, sizda istisnolar 
bo'ladi. 
Istisnolardan qochishning ikki yo'li bor va buni seriyali qilish - 
Noma'lum maydonlarga e'tibor bermang 


onwerId ga e'tibor bermang. Dastur sinfiga quyidagi izohni qo'shing 
@JsonIgnoreProperties(ignoreUnknown = true) public class Program {} 
Maxsus deserializerni yozing 
Ammo bu owerId maydoniga kerak bo'lgan holatlar mavjud. Aytaylik, siz uni 
Foydalanuvchining identifikatori sifatida bog'lashni xohlaysiz 
sinf. 
Bunday holda, siz maxsus seriyali deserializer yozishingiz kerak Ko'rib turganingizdek, 
avval JonsParser-dan JsonNode-ga kirishingiz kerak. Va keyin siz osongina chiqarib 
olishingiz mumkin 
get() usuli yordamida JsonNode ma'lumotlari. va siz maydon nomiga ishonch hosil 
qilishingiz kerak. Bajarishi kerak 
aniq ism bo'lsa, imlo xatosi istisnolarga olib keladi. 
Va nihoyat, ProgramDeserializer-ni ObjectMapper-da ro'yxatdan o'tkazishingiz kerak. 
Shu bilan bir qatorda, deserializerni to'g'ridan-to'g'ri ro'yxatdan o'tkazish uchun izohdan 
foydalanishingiz mumkin - 
@JsonDeserialize(using = ProgramDeserializer.class) public class Program { } 

Download 342.92 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling