[Swift] Codable 프로토콜을 사용하여 JSON 데이터를 디코딩하는 방법

Oni·2023년 10월 30일
0

기술면접

목록 보기
6/13
post-thumbnail

1. Codable

Codable 프로토콜은 Swift 4부터 도입된 프로토콜로, JSON 데이터를 Swift 객체로 디코딩하고, Swift 객체를 JSON 데이터로 인코딩할 수 있게 해준다. Codable 프로토콜을 사용하여 JSON 데이터를 Swift 객체로 디코딩하는 방법은 아래와 같다.

1-1. 디코딩할 Swift 구조체 또는 클래스 정의

struct Person: Codable {
    var name: String
    var age: Int
    var address: String
}

1-2. JSON 데이터를 디코딩하여 Swift 객체로 변환

let json = """
{
    "name": "John",
    "age": 30,
    "address": "123 Main St"
}
""".data(using: .utf8)!

do {
    let person = try JSONDecoder().decode(Person.self, from: json)
    print("Name: \(person.name)")
    print("Age: \(person.age)")
    print("Address: \(person.address)")
} catch {
    print("Error decoding JSON: \(error)")
}

위의 코드에서는 JSONDecoder를 사용하여 JSON 데이터를 Person 구조체로 디코딩하고, 디코딩된 객체의 속성을 출력하고 있다.

JSONDecoder의 decode(_:from:) 메서드를 사용하여 디코딩을 수행한다. 첫 번째 매개변수로 디코딩할 Swift 타입을 전달하고, 두 번째 매개변수로는 디코딩할 JSON 데이터를 전달한다.

또한, 만약 JSON 키와 Swift 구조체 또는 클래스의 속성명이 다른 경우, CodingKeys 열거형을 사용하여 매핑해줄 수 있다.

struct Person: Codable {
    var fullName: String
    var personAge: Int
    
    enum CodingKeys: String, CodingKey {
        case fullName = "name"
        case personAge = "age"
    }
}

위와 같이 CodingKeys 열거형을 사용하면 JSON 데이터의 "name" 키가 fullName 속성과, "age" 키가 personAge 속성과 매핑된다.


Codable 프로토콜은 Swift 객체와 JSON 데이터 간의 변환을 자동으로 처리해주는 강력한 도구이다. JSONDecoder를 사용하면 JSON 데이터를 Swift 객체로 손쉽게 디코딩할 수 있다.

profile
하지만 나는 끝까지 살아남을 거야!

0개의 댓글