@SerialName
- Kotlin kursu
- İleri seviye
- Ders 27/83
- 5 dk
@SerialName ile JSON anahtar adlarını öğrenirsin.
@SerialName nedir?
@SerialName, bir özelliğin JSON karşılığını değiştiren annotation'dır. Kotlin özellik adıyla JSON alan adı farklıysa köprü kurar.
Örnek: @Serializable data class User(@SerialName("user_name") val name: String). Bu sınıfta name özelliği JSON'da user_name olarak görünür. JSON'dan okurken de user_name aranır. Bu, dış kaynaklu JSON'ı mevcut Kotlin isimlendirmesine uyarlamak için kullanılır. Annotation, özellik bildiriminin hemen üstüne yazılır.
@SerialName kullanım örnekleri
@SerialName özellikle API'lerden gelen JSON'da kullanışlıdır. JSON alan adları snake_case iken Kotlin camelCase kullanır.
Örnek: bir API {"first_name": "Ayşe", "created_at": "2024-01-01"} döndürür. Sen @SerialName("first_name") val firstName: String ve @SerialName("created_at") val createdAt: String yazarsın. Böylece Kotlin kodun okunaklı kalırken JSON alan adları korunur. Her özellik için ayrı annotation eklenir. @SerialName yalnızca serileştirme sırasında etkilidir; runtime davranışını değiştirmez.
Uygulama @SerialName ile alan eşle
@Serializable ile işaretli data class User(@SerialName("user_name") val name: String) tanımla. main içinde println("User hazır") yazdır.
Başlangıç kodu
// SerialName annotation
// buraya yaz
import kotlinx.serialization.Serializable
import kotlinx.serialization.SerialName
fun main() {
}Örnek çözüm
@Serializable
data class User(@SerialName("user_name") val name: String)
fun main() {
println("User hazır")
}Beklenen çıktı
User hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 @SerialName parçalarını eşle
| Kavram | Anlamı |
|---|---|
@SerialName |
Alan adını eşler |
user_name |
JSON alanı |
name |
Kotlin özellik |
@Serializable |
Sınıfı işaretler |
2 @SerialName ne zaman kullanılır?
- Sınıf sealed ise
- Özellik null ise
- Kotlin özellik adı JSON alan adından farklıysa Doğru cevap
- JSON prettyPrint isteniyorsa
Açıklama: @SerialName ad farklılığı durumunda köprü kurar.
3 @SerialName çağrısını tamamla
@Serializable
data class User(@____("user_name") val name: String)
@Serializable
data class User(@SerialName("user_name") val name: String)
Açıklama: @SerialName ile JSON alan adı belirtilir.