# Codable & JSON Parsing (iOS) > Codable protocol, JSONEncoder, JSONDecoder, custom keys, nested JSON, date strategies - 20 interview questions - Mid-Level - [Interview Questions: iOS](https://sharpskill.dev/en/technologies/ios/interview-questions.md) ## 1. What is the Codable protocol in Swift? **Answer** Codable is a typealias combining Encodable and Decodable. It enables serialization and deserialization of Swift structures to/from JSON or other formats. It's the standard mechanism for handling JSON in iOS without external frameworks. ## 2. What is the difference between Encodable and Decodable? **Answer** Encodable serializes a Swift instance into JSON data (object to JSON). Decodable performs the reverse operation, converting JSON into a Swift instance. These protocols are orthogonal: a struct can implement one, the other, or both as needed. ## 3. What is the purpose of the CodingKeys enum during JSON decoding? **Answer** CodingKeys maps Swift properties to actual JSON keys. It handles naming mismatches between Swift code (camelCase) and JSON (snake_case). Without CodingKeys, property names must exactly match JSON keys. ## 17 more questions available - How to create a JSONDecoder instance to decode JSON? - What does JSONEncoder.encode() return after successful serialization? Sign up for free: https://sharpskill.dev/en/login ## Other iOS interview topics - [Swift Basics](https://sharpskill.dev/en/technologies/ios/interview-questions/swift-basics.md): 25 questions, Junior - [Swift Language Essentials](https://sharpskill.dev/en/technologies/ios/interview-questions/swift-language-essentials.md): 15 questions, Junior - [UIKit Fundamentals](https://sharpskill.dev/en/technologies/ios/interview-questions/uikit-fundamentals.md): 18 questions, Junior - [UIViewController Lifecycle](https://sharpskill.dev/en/technologies/ios/interview-questions/uiviewcontroller-lifecycle.md): 20 questions, Junior - [UserDefaults & Keychain](https://sharpskill.dev/en/technologies/ios/interview-questions/userdefaults-keychain.md): 20 questions, Junior - [Application Lifecycle](https://sharpskill.dev/en/technologies/ios/interview-questions/app-lifecycle.md): 20 questions, Junior - [Auto Layout & Constraints](https://sharpskill.dev/en/technologies/ios/interview-questions/auto-layout-constraints.md): 24 questions, Mid-Level - [UITableView & UICollectionView](https://sharpskill.dev/en/technologies/ios/interview-questions/uitableview-uicollectionview.md): 25 questions, Mid-Level - [SwiftUI Basics](https://sharpskill.dev/en/technologies/ios/interview-questions/swiftui-basics.md): 18 questions, Mid-Level - [SwiftUI State Management](https://sharpskill.dev/en/technologies/ios/interview-questions/swiftui-state-management.md): 22 questions, Mid-Level - [SwiftUI Navigation](https://sharpskill.dev/en/technologies/ios/interview-questions/swiftui-navigation.md): 18 questions, Mid-Level - [Networking & URLSession](https://sharpskill.dev/en/technologies/ios/interview-questions/networking-urlsession.md): 20 questions, Mid-Level - [Core Data](https://sharpskill.dev/en/technologies/ios/interview-questions/core-data.md): 22 questions, Mid-Level - [Protocol Oriented Programming](https://sharpskill.dev/en/technologies/ios/interview-questions/protocol-oriented-programming.md): 20 questions, Mid-Level - [MVVM Architecture](https://sharpskill.dev/en/technologies/ios/interview-questions/mvvm-architecture.md): 20 questions, Mid-Level - [Push Notifications](https://sharpskill.dev/en/technologies/ios/interview-questions/push-notifications.md): 18 questions, Mid-Level - [Unit Testing & XCTest](https://sharpskill.dev/en/technologies/ios/interview-questions/unit-testing-xctest.md): 20 questions, Mid-Level - [UI Testing](https://sharpskill.dev/en/technologies/ios/interview-questions/ui-testing.md): 18 questions, Mid-Level - [Xcode & Build System](https://sharpskill.dev/en/technologies/ios/interview-questions/xcode-build-system.md): 16 questions, Mid-Level - [Swift Package Manager](https://sharpskill.dev/en/technologies/ios/interview-questions/swift-package-manager.md): 16 questions, Mid-Level - [Memory Management & ARC](https://sharpskill.dev/en/technologies/ios/interview-questions/memory-management-arc.md): 22 questions, Senior - [Combine Framework](https://sharpskill.dev/en/technologies/ios/interview-questions/combine-framework.md): 24 questions, Senior - [Concurrency & async/await](https://sharpskill.dev/en/technologies/ios/interview-questions/concurrency-async-await.md): 26 questions, Senior - [iOS Design Patterns](https://sharpskill.dev/en/technologies/ios/interview-questions/ios-design-patterns.md): 24 questions, Senior - [Performance Optimization](https://sharpskill.dev/en/technologies/ios/interview-questions/performance-optimization.md): 22 questions, Senior - [Security & Encryption](https://sharpskill.dev/en/technologies/ios/interview-questions/security-encryption.md): 20 questions, Senior - [SwiftUI Advanced](https://sharpskill.dev/en/technologies/ios/interview-questions/swiftui-advanced.md): 22 questions, Senior - [iOS Application Architecture](https://sharpskill.dev/en/technologies/ios/interview-questions/ios-app-architecture.md): 22 questions, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/en/technologies/ios/interview-questions/codable-json-parsing