Bird
Raised Fist0
iOS Swiftmobile~5 mins

Codable protocol for JSON parsing in iOS Swift - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the Codable protocol in Swift?
The Codable protocol allows Swift types to be easily encoded to and decoded from external representations like JSON, making data parsing and serialization simple.
Click to reveal answer
beginner
Which two protocols does Codable combine?
Codable combines Encodable (for encoding data) and Decodable (for decoding data).
Click to reveal answer
beginner
How do you decode JSON data into a Swift struct that conforms to Codable?
Use <code>JSONDecoder</code> to decode JSON data into the struct. For example: <br><code>let decoded = try JSONDecoder().decode(MyStruct.self, from: jsonData)</code>
Click to reveal answer
beginner
What must you do to a Swift struct to make it parse JSON automatically?
Make the struct conform to Codable and ensure all its properties are also Codable types.
Click to reveal answer
intermediate
How can you handle JSON keys that don't match your Swift property names?
Implement a CodingKeys enum inside your struct to map JSON keys to your property names.
Click to reveal answer
What does the Codable protocol help you do in Swift?
AHandle network connections
BCreate user interfaces
CManage memory manually
DParse and generate JSON data easily
Which class is used to decode JSON data into Swift types?
AJSONEncoder
BJSONDecoder
CDataDecoder
DJSONParser
If your JSON key is user_name but your Swift property is userName, how do you handle this mismatch?
AUse a <code>CodingKeys</code> enum to map keys
BRename the property to <code>user_name</code>
CChange the JSON key to <code>userName</code>
DYou cannot handle this mismatch
What must all properties of a Codable struct be?
AAlso conform to <code>Codable</code>
BPrivate
CStrings only
DOptional
Which protocol is NOT part of Codable?
AEncodable
BDecodable
CSerializable
DNone of the above
Explain how to use the Codable protocol to parse JSON data into a Swift struct.
Think about the steps from defining the struct to decoding JSON.
You got /4 concepts.
    Describe how you would handle a JSON key that does not match your Swift property name when using Codable.
    Focus on the enum inside the struct.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the Codable protocol in Swift help you do?
      easy
      A. Convert Swift objects to and from JSON easily
      B. Create user interface elements
      C. Manage app navigation
      D. Handle network connections

      Solution

      1. Step 1: Understand the purpose of Codable

        The Codable protocol is designed to simplify converting data between Swift objects and external formats like JSON.
      2. Step 2: Identify the correct use case

        It is not related to UI, navigation, or networking directly, but specifically for encoding and decoding data.
      3. Final Answer:

        Convert Swift objects to and from JSON easily -> Option A
      4. Quick Check:

        Codable = Convert JSON [OK]
      Hint: Codable means easy JSON conversion [OK]
      Common Mistakes:
      • Confusing Codable with UI or navigation tasks
      • Thinking Codable manages network calls
      • Assuming Codable is for database storage
      2. Which of the following is the correct way to declare a Swift struct that can be encoded and decoded using Codable?
      easy
      A. struct User { var name: String }
      B. struct User: Decodable { var name: String }
      C. class User: Codable { var name: String }
      D. struct User: Codable { var name: String }

      Solution

      1. Step 1: Check the struct declaration

        To use Codable, the struct must conform to the Codable protocol explicitly.
      2. Step 2: Verify the syntax

        struct User: Codable { var name: String } correctly declares a struct conforming to Codable. struct User { var name: String } lacks Codable conformance. class User: Codable { var name: String } uses a class, which is valid but not asked here. struct User: Decodable { var name: String } only conforms to Decodable, missing Encodable.
      3. Final Answer:

        struct User: Codable { var name: String } -> Option D
      4. Quick Check:

        Struct + Codable = struct User: Codable { var name: String } [OK]
      Hint: Use struct with Codable for JSON parsing [OK]
      Common Mistakes:
      • Forgetting to add Codable conformance
      • Using class instead of struct when asked
      • Using only Decodable without Encodable
      3. Given this JSON string:
      {"id": 10, "title": "Book"}

      And this Swift struct:
      struct Item: Codable { var id: Int; var title: String }

      What will be the value of item.title after decoding?
      medium
      A. "id"
      B. "Book"
      C. 10
      D. nil

      Solution

      1. Step 1: Match JSON keys to struct properties

        The JSON has keys "id" and "title" matching the struct's properties.
      2. Step 2: Decode JSON to struct

        Decoding will assign the value "Book" to title and 10 to id.
      3. Final Answer:

        "Book" -> Option B
      4. Quick Check:

        Decoded title = "Book" [OK]
      Hint: JSON keys match struct properties exactly [OK]
      Common Mistakes:
      • Confusing property names with values
      • Expecting numeric value for title
      • Assuming decoding fails and returns nil
      4. What is wrong with this Swift code for decoding JSON?
      let json = "{\"name\": \"Alice\"}".data(using: .utf8)!
      struct Person: Codable { var name: String }
      let person = try JSONDecoder().decode(Person.self, from: json)
      medium
      A. The JSONDecoder call is missing try/catch
      B. The struct does not conform to Codable
      C. The JSON string is not valid
      D. The JSON data is nil

      Solution

      1. Step 1: Check JSON string validity

        The JSON string is valid and properly escaped.
      2. Step 2: Verify Codable conformance

        The struct Person conforms to Codable correctly.
      3. Step 3: Analyze JSONDecoder usage

        The decode call uses try but lacks a do-catch block or try? to handle errors, which is required.
      4. Final Answer:

        The JSONDecoder call is missing try/catch -> Option A
      5. Quick Check:

        Missing error handling for try [OK]
      Hint: Always handle errors with try when decoding JSON [OK]
      Common Mistakes:
      • Ignoring error handling with try
      • Assuming JSON string is invalid
      • Forgetting Codable conformance
      5. You have this JSON:
      {"user": {"id": 1, "name": "Bob"}}

      And these Swift structs:
      struct User: Codable { var id: Int; var name: String }
      struct Response: Codable { var user: User }

      How do you decode the JSON into a Response object?
      hard
      A. Use JSONSerialization.jsonObject(with: jsonData)
      B. Use JSONDecoder().decode(User.self, from: jsonData)
      C. Use JSONDecoder().decode(Response.self, from: jsonData)
      D. Use JSONEncoder().encode(Response.self, from: jsonData)

      Solution

      1. Step 1: Identify the top-level JSON structure

        The JSON has a top-level key "user" matching the Response struct's property.
      2. Step 2: Choose correct decoding target

        To decode the entire JSON, decode to Response.self, which contains User.
      3. Final Answer:

        Use JSONDecoder().decode(Response.self, from: jsonData) -> Option C
      4. Quick Check:

        Decode top-level struct = Use JSONDecoder().decode(Response.self, from: jsonData) [OK]
      Hint: Decode to the struct matching JSON root [OK]
      Common Mistakes:
      • Decoding to nested User instead of Response
      • Using JSONEncoder instead of JSONDecoder
      • Using JSONSerialization instead of Codable
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard