0Pricing
Swift Academy · Ders

JSONEncoder ile Kodlama

Swift değerlerinden JSON verisi üretin.

JSONEncoder ile Kodlama, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. 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, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

JSONEncoder Oluşturma

JSONEncoder, herhangi bir Encodable değerini JSON Data'ya dönüştüren temel araçtır. Bir tane oluşturun, ardından değeriniz üzerinde encode(_:) çağrısını yapın.

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
}

let encoder = JSONEncoder()
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(data.count, "bytes")

Data'dan Okunabilir Bir Dizeye

encode(_:), ikili Data döndürür. Okumak için baytların kodunu String(data:encoding:) ile UTF-8 olarak çözün.

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
}

let data = try JSONEncoder().encode(Movie(title: "Up", year: 2009))
let text = String(data: data, encoding: .utf8)!
print(text)

Biçimlendirilmiş Çıktı

JSON varsayılan olarak sıkıştırılmıştır. Girintiler ve satır sonları eklemek için outputFormatting = .prettyPrinted ayarını yapın; böylece sonuç insanların okuması için kolaylaşır.

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
}

let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try encoder.encode(Movie(title: "Up", year: 2009))
print(String(data: data, encoding: .utf8)!)

Kararlı Çıktı için Sıralı Anahtarlar

Seçenekleri bir diziyle birleştirebilirsiniz. .sortedKeys eklemek anahtarları alfabetik olarak sıralar ve çıktıyı belirlenebilir hâle getirir; bu, sınamalar ve anlık görüntüler için harikadır.

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
    var rating: Double
}

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(Movie(title: "Up", year: 2009, rating: 4.8))
print(String(data: data, encoding: .utf8)!)

Dizileri Kodlama

Derlemeleri doğrudan kodlayabilirsiniz. Encodable değerlerinden oluşan bir dizi, JSON dizisine dönüşür.

import Foundation

struct Movie: Codable {
    var title: String
    var year: Int
}

let list = [Movie(title: "Up", year: 2009),
            Movie(title: "Coco", year: 2017)]
let data = try JSONEncoder().encode(list)
print(String(data: data, encoding: .utf8)!)

Sözlükleri Kodlama

[String: Encodable-element] sözlüğü bir JSON nesnesine kodlanır. .sortedKeys eklemediğiniz sürece anahtar sırasının garanti edilmediğine dikkat edin.

import Foundation

let scores: [String: Int] = ["alice": 90, "bob": 75]
let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
let data = try encoder.encode(scores)
print(String(data: data, encoding: .utf8)!)

İç İçe Yapıları Kodlama

İç içe Codable türleri özyinelemeli olarak kodlanır ve otomatik olarak iç içe JSON nesneleri üretir.

import Foundation

struct Author: Codable { var name: String }
struct Post: Codable {
    var title: String
    var author: Author
}

let p = Post(title: "Hello", author: Author(name: "Mae"))
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
print(String(data: try encoder.encode(p), encoding: .utf8)!)

Kodlayıcıyı Yeniden Kullanma

Yapılandırılmış bir JSONEncoder birçok değer için yeniden kullanılabilir. Bir kez yapılandırın ve kodunuz boyunca aynı biçimlendirmeyi uygulamayı sürdürün.

import Foundation

struct Tag: Codable { var name: String }

let encoder = JSONEncoder()
encoder.outputFormatting = .sortedKeys
for t in [Tag(name: "swift"), Tag(name: "json")] {
    let data = try encoder.encode(t)
    print(String(data: data, encoding: .utf8)!)
}

Sayıları ve Mantıksal Değerleri Kodlama

Sayısal ve mantıksal özellikler JSON sabitleri olarak, tırnak işareti olmadan kodlanır. Dizeler tırnak içine alınır; Int, Double ve Bool ise alınmaz.

import Foundation

struct Stats: Codable {
    var count: Int
    var ratio: Double
    var enabled: Bool
}

let data = try JSONEncoder().encode(Stats(count: 3, ratio: 0.75, enabled: true))
print(String(data: data, encoding: .utf8)!)

İsteğe Bağlı Değerleri Kodlama

Varsayılan olarak nil olan isteğe bağlı bir değer JSON'dan tamamen çıkarılır. nil olmayan isteğe bağlı bir değer, içerdiği değer olarak kodlanır.

import Foundation

struct Item: Codable {
    var name: String
    var note: String?
}

let data = try JSONEncoder().encode(Item(name: "Pen", note: nil))
print(String(data: data, encoding: .utf8)!)

Hepsini Bir Araya Getirme

Tipik bir kodlama akışı şöyledir: değeri oluşturun, kodlayıcıyı yapılandırın, encode çağrısını yapın, ardından günlükleme veya aktarım için Data'yı bir String'e dönüştürün.

import Foundation

struct Order: Codable {
    var id: Int
    var items: [String]
}

let order = Order(id: 42, items: ["a", "b"])
let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]
let data = try encoder.encode(order)
print(String(data: data, encoding: .utf8)!)

Hızlı Kontrol: JSONEncoder

Kodlama bilginizi sınayın.

Özet: JSONEncoder ile Kodlama

Swift değerlerini JSON'a dönüştürmeyi öğrendiniz:

  • encode(_:), Data döndürür; String(data:encoding:) ile dönüştürün.
  • .prettyPrinted ve .sortedKeys ile birlikte kullanılan outputFormatting, düzeni denetler.
  • Diziler, sözlükler, iç içe türler, sayılar, mantıksal değerler ve isteğe bağlı değerlerin tümü anlamlı biçimde kodlanır.
  • Yapılandırılmış bir kodlayıcı birçok değer arasında yeniden kullanılabilir.

Sıkça Sorulan Sorular

“JSONEncoder ile Kodlama” dersi ücretsiz mi?

Evet — “JSONEncoder ile Kodlama” 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 Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“JSONEncoder ile Kodlama” dersinde ne öğreneceğim?

Swift değerlerinden JSON verisi üretin. Swift 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.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift 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 2. dersidir.

“JSONEncoder ile Kodlama” 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 Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift 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

  1. Codable'a Uyum Sağlama
  2. JSONEncoder ile Kodlama
  3. JSONDecoder ile Kod Çözme
  4. İsteğe Bağlı ve İç İçe Türleri İşleme
← Swift Academy Sayfasına Dön