CodeBlanks Logo Icon CodeBlanks

@SerialName

@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

Main.kt
// SerialName annotation
// buraya yaz
import kotlinx.serialization.Serializable
import kotlinx.serialization.SerialName

fun main() {
    
}

Örnek çözüm

Main.kt
@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

Soru
@Serializable
data class User(@____("user_name") val name: String)
Cevap
@Serializable
data class User(@SerialName("user_name") val name: String)

Açıklama: @SerialName ile JSON alan adı belirtilir.

İleri seviye bölümündeki tüm dersler