Swift version: 5.10
Swift’s Codable
protocol makes it easy to convert JSON to native Swift structs and classes – just design data types that hold the same keys and values as your JSON, then use JSONDecoder
to convert.
Here’s some example JSON we can work with:
let jsonString = """
[
{
"name": "Taylor Swift",
"age": 26
},
{
"name": "Justin Bieber",
"age": 25
}
]
"""
let jsonData = Data(jsonString.utf8)
That stores two people in an array, each with a name and an age.
We need to make a matching Swift struct that can hold those fields. The only requirement Codable
has is that all the properties inside the struct also conform to Codable
– in our case that’s a string and an integer, so we’re all set.
Start by adding this type:
struct Person: Codable {
var name: String
var age: Int
}
Now we can go ahead and decide the JSON data into an array of that Person
struct. This is a throwing operation, so you need to use try
. Here’s some example code:
let decoder = JSONDecoder()
do {
let people = try decoder.decode([Person].self, from: jsonData)
print(people)
} catch {
print(error.localizedDescription)
}
That will result in people
storing the two items from the JSON, except now they are parsed into Swift types so we can refer to them in a type-safe way.
SPONSORED Get accurate app localizations in minutes using AI. Choose your languages & receive translations for 40+ markets!
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.