JSON decode in Swift
Swift ha una modalità un pò differente rispetto ad altri linguaggi per fare il decode di JSON, in quanto usa molto le Struct.
Oggi vediamo un esempio usando le API SWAPI come test.
Nello specifico useremo questa, che ci da un bell'array di pianeti di Star Wars: https://swapi.co/api/planets/.
Quindi, partendo dalle API:
import Foundation
struct StarWarsResult: Codable {
let results: [StarWarsPlanet]
}
struct StarWarsPlanet: Codable {
let name: String
let population: String
}
let data = try! Data.init(contentsOf: URL.init(string: "https://swapi.co/api/planets/")!)
do {
let decoder: JSONDecoder = JSONDecoder.init()
let res = try decoder.decode(StarWarsResult.self, from: data)
for pl in res.results {
print("Il pianeta \(pl.name), ha questa popolazione: \(pl.population)")
}
} catch let e {
print(e)
}
Abbiamo due Struct, di cui la prima è un array che contiene gli oggetti della seconda.
La seconda rispecchia ogni dato dei pianeti.
Questo quello che vedremo in console:
Il pianeta Alderaan, ha questa popolazione: 2000000000
Il pianeta Yavin IV, ha questa popolazione: 1000
Il pianeta Hoth, ha questa popolazione: unknown
Il pianeta Dagobah, ha questa popolazione: unknown
.........................
Enjoy!
swift json struct jsondecoder
Commentami!