3️⃣Codable
Fall 2023 | Vin Bui
In the previous section, we mentioned how data that is sent across the internet is represented as JSON. In this section, we will discuss how to decode JSON data and use it in our Swift code.
What is Codable?
In Swift, there are two protocols that our model structs/classes must conform to in order to be decoded: Decodable
and Encodable
. However, we commonly use the protocol Codable
instead which essentially means that we are conforming to both protocols.
These protocols are very powerful and allow us to customize our own JSON decoder and encoder. For the scope of this course, we will only touch the bare surface.
Structuring our Data Model
Consider the following JSON data representing a student:
This is the information that we are given from the backend that represents a student. As a frontend developer, we need to make sure that both the frontend and the backend agree on one schema. Given this data, we have to decide on how to create our data model objects.
There are five keys in this JSON here: age
, classes
, first_name
, last_name
and major
. Normally, we want the name of our properties to match exactly with the keys in the JSON (although there is a way to customize this). Once we have the names down, we need to determine the type of each property. Notice that the value for age
does not have quotes around it so it is not a String
. Also notice that the value for classes
contains square brackets, indicating that it is an array where each element is a String
. This gives us the following Student
model:
Notice how the JSON has the key first_name
and last_name
, but in the model we use firstName
and lastName
. Although JSON is typically represented with camelCase, there are times when it may use snake_case (for example in our course). Since Swift's convention is to use camelCase, it has a built-in decoder/encoder that provides a neat way to deal with this, which we will look at in the next section.
Last updated