Koodaus JSONEncoderilla
Tuota Swift-arvoista JSON-dataa.
Koodaus JSONEncoderilla on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
JSONEncoder-kooderin luominen
JSONEncoder on keskeinen työkalu, joka muuntaa minkä tahansa Encodable-arvon JSON-muotoiseksi Data-tietosisällöksi. Luokaa kooderi ja kutsukaa sitten arvolla encode(_:)-metodia.
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")Datasta luettavaksi merkkijonoksi
encode(_:) palauttaa binäärimuotoista Data-tietosisältöä. Lukekaa se purkamalla tavut UTF-8-muotoon String(data:encoding:)-metodilla.
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)Kauniisti muotoiltu tuloste
JSON on oletusarvoisesti tiivistä. Asettakaa outputFormatting = .prettyPrinted, jotta tulosteeseen lisätään sisennykset ja rivinvaihdot ja tuloksesta tulee ihmiselle helposti luettava.
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)!)Lajitellut avaimet vakaata tulostetta varten
Voitte yhdistää asetuksia taulukon avulla. Kun lisäätte .sortedKeys-asetuksen, avaimet järjestetään aakkosjärjestykseen, jolloin tulosteesta tulee deterministinen — tämä sopii erinomaisesti testeihin ja tilannevedoksiin.
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)!)Taulukoiden koodaaminen
Voitte koodata kokoelmia suoraan. Encodable-arvoja sisältävä taulukko muuttuu JSON-taulukoksi.
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)!)Sanakirjojen koodaaminen
[String: Encodable-element]-sanakirja koodataan JSON-objektiksi. Huomioikaa, että avainten järjestystä ei taata, ellette lisää .sortedKeys-asetusta.
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)!)Sisäkkäisten rakenteiden koodaaminen
Sisäkkäiset Codable-tyypit koodataan rekursiivisesti, joten sisäkkäiset JSON-objektit syntyvät automaattisesti.
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)!)Kooderin uudelleenkäyttö
Määritettyä JSONEncoder-kooderia voi käyttää uudelleen useille arvoille. Määrittäkää asetukset kerran ja käyttäkää samaa muotoilua koko koodissanne.
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)!)
}Lukujen ja totuusarvojen koodaaminen
Luku- ja totuusarvo-ominaisuudet koodataan JSON-literaaleina ilman lainausmerkkejä. Merkkijonot ympäröidään lainausmerkeillä, mutta Int-, Double- ja Bool-arvoja ei.
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)!)Optionaalien koodaaminen
Oletusarvoisesti nil-arvoinen optional jätetään kokonaan pois JSONista. Arvon sisältävä optional koodataan sisältämänsä arvon muodossa.
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)!)Kokonaisuuden yhdistäminen
Tyypillinen koodauksen kulku on seuraava: muodostetaan arvo, määritetään kooderin asetukset, kutsutaan encode-metodia ja muunnetaan sitten Data String-merkkijonoksi lokitusta tai siirtoa varten.
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)!)Pikatarkistus: JSONEncoder
Testatkaa tietonne koodaamisesta.
Kertaus: Koodaaminen JSONEncoderilla
Opitte muuntamaan Swift-arvoja JSONiksi:
encode(_:)palauttaaData-tietosisällön, joka muunnetaanString(data:encoding:)-metodilla.outputFormattingyhdessä asetusten.prettyPrintedja.sortedKeyskanssa määrittää ulkoasun.- Taulukot, sanakirjat, sisäkkäiset tyypit, luvut, totuusarvot ja optionalit koodataan kaikki järkevästi.
- Määritettyä kooderia voi käyttää uudelleen useille arvoille.
Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”Koodaus JSONEncoderilla” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Koodaus JSONEncoderilla”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Koodaus JSONEncoderilla”?
Tuota Swift-arvoista JSON-dataa. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Koodaus JSONEncoderilla”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Codable-protokollan toteuttaminen
- Koodaus JSONEncoderilla
- Dekoodaus JSONDecoderilla
- Optionaalien ja sisäkkäisten tyyppien käsittely