JSON Ayrıştırma
Metni JSON değerlerine dönüştürün.
JSON Ayrıştırma, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 4 dersinin 1. 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, Scala for Backend Engineering & Functional Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.
Circe Neden Kullanılır?
Circe, cats işlevsel ekosistemi üzerine kurulmuş, Scala için popüler bir JSON kütüphanesidir.
Tür güvenliğini ve değişmezliği öne çıkarır: ayrıştırma, hata fırlatmak yerine bir Either döndürür; kod çözme ise türsüz eşlemeler yerine türü belirli değerler üretir.
Bu derste ham JSON metnini Circe'nin Json modeline dönüştürmeyi ele alacağız.
Bağımlılığı Ekleme
Circe birkaç modül halinde sunulur. Ayrıştırma ve temel model için circe-core ile circe-parser gerekir.
circe-generic modülü, ilerleyen derslerde ele alınacak otomatik kodlayıcı türetmeyi ekler.
libraryDependencies ++= Seq(
"io.circe" %% "circe-core" % "0.14.6",
"io.circe" %% "circe-parser" % "0.14.6"
)parse İşlevi
JSON okumaya giriş noktası io.circe.parser.parse'tir.
Bir String alır ve Either[ParsingFailure, Json] döndürür. Sol taraf sözdizimi hatalarını içerir; sağ taraf ayrıştırılmış ağacı taşır.
import io.circe.parser._
val result = parse("{\"name\": \"Ada\", \"age\": 36}")
// result: Either[ParsingFailure, Json]Ayrıştırma Hatalarını Ele Alma
parse bir Either döndürdüğü için hataları try/catch yerine desen eşleştirme veya birleştiricilerle açıkça ele alırsınız.
Bir ParsingFailure, sözdizimi sorununu açıklayan, insanların okuyabileceği bir ileti içerir.
parse("{ not valid }") match {
case Right(json) => println(json)
case Left(err) => println(s"Failed: ${err.message}")
}Json Modeli
Başarıyla ayrıştırılan bir değer, altı JSON türünden birini temsil eden değişmez bir ağaç olan Json'dır: nesne, dizi, dize, sayı, doğru, yanlış veya null.
Bu değeri isObject gibi koşullarla inceleyebilir veya yapısı üzerinde fold işlemi uygulayabilirsiniz.
val json = parse("[1, 2, 3]").getOrElse(Json.Null)
println(json.isArray) // true
println(json.isObject) // falseİmleçle Gezinme
İç içe verileri okumak için bir Json değeri üzerinde HCursor çağırın. HCursor, ağaç içinde hareket etmenizi sağlayan bir fermuardır.
Bir nesne anahtarının içine inmek için downField kullanın.
val json = parse("{\"user\": {\"name\": \"Ada\"}}").toOption.get
val cursor = json.hcursor
val name = cursor.downField("user").downField("name").as[String]
// name: Either[DecodingFailure, String] = Right(Ada)as ile Değerleri Çıkarma
Konumlandırıldıktan sonra .as[A], odaklanılan değerin A türüne kodunu çözmeyi dener.
Either[DecodingFailure, A] döndürür; bu nedenle tür uyuşmazlığı bir istisna olarak değil, bir değer olarak bildirilir.
val json = parse("{\"age\": 36}").toOption.get
val age = json.hcursor.downField("age").as[Int]
println(age) // Right(36)parse ve decode
Ham Json ağacını elle incelemek istediğinizde parse kullanın.
Tek adımda doğrudan String değerinden türü belirli bir A değerine geçmek istediğinizde decode[A] kullanın. Bu işlem ayrıştırma ile kod çözmeyi birleştirir.
import io.circe.parser.decode
val n: Either[io.circe.Error, Int] =
decode[Int]("42")
println(n) // Right(42)İsteğe Bağlı Alanlar
Gerçek dünyadaki JSON verilerinde anahtarlar çoğu zaman eksik olabilir. Aşağı inilerek seçilen bir alanda imleç üzerindeki get[A] yöntemi, alan yoksa başarısız olur; getOrElse ise varsayılan bir değer sağlar.
Option[A] türüne kod çözmek, eksik veya null alanı None olarak ele alır.
val json = parse("{\"name\": \"Ada\"}").toOption.get
val nick = json.hcursor.get[Option[String]]("nickname")
println(nick) // Right(None)Dizileri Ayrıştırma
Bir JSON dizisini List[A] veya Vector[A] isteyerek doğrudan bir Scala koleksiyonuna kodunu çözebilirsiniz.
Circe her elemanı eşler ve herhangi bir elemanın türü yanlışsa DecodingFailure ile hemen durur.
import io.circe.parser.decode
val xs = decode[List[Int]]("[1, 2, 3]")
println(xs) // Right(List(1, 2, 3))Biçimli Yazdırma
Herhangi bir Json değeri, sıkıştırılmış çıktı için .noSpaces veya girintili çıktı için .spaces2 kullanılarak yeniden metne dönüştürülebilir.
Bu işlem ayrıştırılmış verinin dönüşümünü sağlar ve günlük kaydı veya hata ayıklama için kullanışlıdır.
val json = parse("{\"a\":1,\"b\":2}").toOption.get
println(json.noSpaces)
println(json.spaces2)Kısa Kontrol
Circe ayrıştırma konusundaki anlayışınızı sınayın.
Özet
JSON metnini Circe'nin modeline dönüştürmeyi öğrendiniz. parse, Either[ParsingFailure, Json] üretir; decode[A] ise doğrudan türü belirli bir değere gider.
HCursor, downField ile gezinmenizi sağlar ve .as[A] türü belirli değerleri çıkarır. Hatalar istisna değil, değerdir.
Yapay zeka eğitmeniyle Scala öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 39
- Dersler
- 143
Sıkça Sorulan Sorular
“JSON Ayrıştırma” dersi ücretsiz mi?
Evet — “JSON Ayrıştırma” 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 Scala for Backend Engineering & Functional Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Scala for Backend Engineering & Functional Programming kursu toplamda 4 dersten oluşur.
“JSON Ayrıştırma” dersinde ne öğreneceğim?
Metni JSON değerlerine dönüştürün. Scala for Backend Engineering & Functional Programming 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.
Scala for Backend Engineering & Functional Programming öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Scala for Backend Engineering & Functional Programming, 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 1. dersidir.
“JSON Ayrıştırma” 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 Scala for Backend Engineering & Functional Programming dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Scala for Backend Engineering & Functional Programming 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
- JSON Ayrıştırma
- Case Class'lara Kod Çözme
- JSON'a Kodlama
- Özel Kodlayıcılar