JSON Kodlama ve Kod Çözme
JSON'a dönüştürün ve JSON'dan dönüştürün
JSON Kodlama ve Kod Çözme, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.
Json Nesnesi
Json nesnesi, kodlama ve kod çözmenin temelidir. Varsayılan örnek kullanıma hazırdır; isterseniz yapılandırılmış bir örnek de oluşturabilirsiniz.
import kotlinx.serialization.json.Json
val json = JsonDizeye Kodlama
Bir nesneyi JSON dizesine dönüştürmek için encodeToString kullanın.
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
@Serializable
data class Book(val title: String, val pages: Int)
fun main() {
val book = Book("Kotlin in Action", 360)
val text = Json.encodeToString(book)
println(text)
}Dizeden Kod Çözme
JSON'u yeniden bir nesneye dönüştürmek için decodeFromString kullanın. Hedef tür çıkarılabilir veya açıkça verilebilir.
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
@Serializable
data class Book(val title: String, val pages: Int)
fun main() {
val text = "{\"title\":\"Atomic Kotlin\",\"pages\":500}"
val book = Json.decodeFromString<Book>(text)
println(book.title)
}Listeleri Kodlama
Koleksiyonlar otomatik olarak kodlanır. Serileştirilebilir nesnelerden oluşan bir liste JSON dizisine dönüşür.
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
@Serializable
data class Tag(val name: String)
fun main() {
val tags = listOf(Tag("kotlin"), Tag("json"))
println(Json.encodeToString(tags))
}Biçimlendirilmiş Yazdırma
Girintili çıktıyı etkinleştirmek için bir Json { } oluşturucusu yapılandırın; bu, günlük kaydı ve hata ayıklama için kullanışlıdır.
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
@Serializable
data class Point(val x: Int, val y: Int)
val pretty = Json { prettyPrint = true }
fun main() {
println(pretty.encodeToString(Point(1, 2)))
}Bilinmeyen Anahtarları Yok Sayma
Varsayılan olarak JSON, sınıfınızda bulunmayan anahtarları içeriyorsa kod çözme başarısız olur. Bunları atlamak için ignoreUnknownKeys = true ayarını yapın; gelişen API'ler için kullanışlıdır.
import kotlinx.serialization.json.Json
val lenient = Json { ignoreUnknownKeys = true }Varsayılanları Kodlama
Varsayılan olarak, varsayılan değerlerine eşit olan özellikler yazılmaz. Bunları her zaman dahil etmek için encodeDefaults = true ayarını etkinleştirin.
import kotlinx.serialization.json.Json
val withDefaults = Json { encodeDefaults = true }JsonElement ile Çalışma
Dinamik JSON için türü belirli bir sınıf yerine JsonElement ağacına ayrıştırma yapabilirsiniz.
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement
fun main() {
val element: JsonElement = Json.parseToJsonElement("{\"a\":1}")
println(element)
}JsonObject Alanlarını Okuma
Bir JsonElement öğesini JsonObject türüne dönüştürüp alanlara anahtarlarıyla erişin, ardından ilkel değerleri dönüştürün.
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import kotlinx.serialization.json.int
fun main() {
val obj = Json.parseToJsonElement("{\"a\":1}").jsonObject
val a = obj["a"]!!.jsonPrimitive.int
println(a)
}Gidiş-Dönüş Serileştirmesi
Kodlayıp ardından kodunu çözmek, eşit bir nesne döndürmelidir; buna gidiş-dönüş denir. Bu, modelinizin mantık kontrolünü yapmak için harika bir yoldur.
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
@Serializable
data class P(val x: Int)
fun main() {
val original = P(42)
val back = Json.decodeFromString<P>(Json.encodeToString(original))
println(original == back)
}Yaygın Kod Çözme Hataları
Şu çalışma zamanı istisnalarına dikkat edin:
SerializationException: Unexpected JSON token— hatalı biçimlendirilmiş JSON- Eksik zorunlu alan — JSON'da varsayılan değeri olmayan bir özellik eksik
- Bilinmeyen anahtar —
ignoreUnknownKeysile katı davranışı devre dışı bırakın
Hızlı Kontrol
API'niz sık sık yeni JSON alanları ekliyor. Kod çözmenin bozulmasını hangi yapılandırma önler?
Özet
Artık nesneler ve JSON arasında geçiş yapabilirsiniz:
encodeToString/decodeFromStringJson { }ile yapılandırma:prettyPrint,ignoreUnknownKeys,encodeDefaultsJsonElementaracılığıyla dinamik JSON ayrıştırma
Sırada desteklenmeyen türler için özel serileştiriciler var.
Sıkça Sorulan Sorular
“JSON Kodlama ve Kod Çözme” dersi ücretsiz mi?
Evet — “JSON Kodlama ve Kod Çözme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.
“JSON Kodlama ve Kod Çözme” dersinde ne öğreneceğim?
JSON'a dönüştürün ve JSON'dan dönüştürün Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“JSON Kodlama ve Kod Çözme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- kotlinx.serialization Kurulumu
- Serileştirilebilir Sınıflar
- JSON Kodlama ve Kod Çözme
- Özel Serileştiriciler