Moshi & Retrofit ile Dinamik JSON seri durumdan çıkarma | tarafından Aleksandar Zekovic | Tem, 2022

Moshi & Retrofit ile Dinamik JSON seri durumdan çıkarma |  tarafından Aleksandar Zekovic |  Tem, 2022

Moshi & Retrofit ile ham JSON nesnelerinin serisi nasıl kaldırılır

Muhtemelen tek bir yanıtta farklı JSON yapıları ile karşılaşmışsınızdır. Uygulamada ayrıştırma yöntemleriniz farklı olabilir. Aşağıdaki JSON’a sahip olduğumuzu hayal edin:

Bu JSON’u farklı şekillerde seri hale getirebiliriz. Seri durumdan çıkarmanın kötü bir yolu, her özelliği tek bir nesneye koymaktır.

Bu, kendimizi ve kodu paylaştığımız diğerlerini karıştırdığımız yerdir.

Bu yol neden kötü?

Cevap basit. Bununla kamyonun ilgili bir özelliğe sahip olduğunu belirledik. kanat açıklığıki bu doğru değil.

burası polimorfizm işe yarar.

polimorfizm nedir?

polimorfizm bir cismin pek çok şekle bürünme yeteneğidir.

Örneğimizde:

İlk adımda Aracı tanımladık mühürlü arayüz soyut parametre ile tip.

Mühürlü arayüz nedir?

Mühürlü arabirimler, kalıtım üzerinde daha fazla kontrol sağlayan kısıtlı sınıf hiyerarşilerini temsil eder.

Onlar hakkında daha fazlasını okuyabilirsiniz burada.

İkinci ve üçüncü adımlarda, Moshi’nin codegen ek açıklamalarının yanı sıra farklı türler için uygun sınıfları ekledik.

Şimdi, kullanarak bir fabrika oluşturmamız gerekiyor. PolimorfikJsonAdapterFactory.

Nedir PolimorfikJsonAdapterFactory?

JSON’da tür bilgisi içeren nesneler için bir JsonAdapter fabrikası. JSON Moshi kodunu çözerken, hangi sınıfın kodunun çözüleceğini belirlemek için bu tür bilgilerini kullanır. Moshi, kodlama yaparken, hangi tür bilgilerinin dahil edileceğini belirlemek için nesnenin sınıfını kullanır.

Burada, kullanılacak belirli sınıfı tanımlamak için hangi JSON özelliğinin kullanılması gerektiğini belirtmemiz gerekiyor. Örneğimizde bu tip.

Son olarak, fabrikayı Moshi oluşturucuya eklememiz gerekiyor.

Yanıtta enum olmayan bir tür alırsak ne olur?

Orada bir sorunumuz var, o zaman bu fabrika iyi çalışmayacak. Bir çözüm eklemektir BİLİNMEYEN içinde yeni bir tür olarak Araç tipi ve fabrika içinde varsayılan bir değer tanımlayın.

fotoğrafı çeken Antonio Janeski üzerinde Sıçramayı kaldır

Bu kadar. Umarım yardımcı olmuştur. 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.