[swift] Swift Sourcery와 JSON 파싱의 자동화

지금까지 스위프트에서 JSON 데이터를 파싱하려면 매번 반복적인 작업을 해야했습니다. 하지만 Swift Sourcery와 함께 사용하면 이 작업을 자동화할 수 있습니다. 이 글에서는 Swift Sourcery를 사용하여 JSON 파싱을 자동화하는 방법에 대해 알아보겠습니다.

Swift Sourcery란?

Swift Sourcery는 코드 생성 도구로, 스위프트 코드를 분석하여 템플릿에 따라 자동으로 코드를 생성해줍니다. 이를 통해 반복적인 작업을 자동화하고, 코드의 재사용성을 높일 수 있습니다.

JSON 파싱 자동화하기

  1. Sourcery 설치

    Sourcery를 사용하기 위해서는 먼저 설치해야 합니다. 터미널에서 다음 명령을 실행하여 Sourcery를 설치합니다.

    $ brew install Sourcery
    
  2. 모델 클래스 작성

    JSON 데이터를 파싱할 모델 클래스를 작성합니다. 예를 들어, 다음과 같은 JSON 데이터가 있다고 가정해봅시다.

    {
      "name": "John Doe",
      "age": 30,
      "email": "johndoe@example.com"
    }
    

    이를 파싱할 모델 클래스를 다음과 같이 작성합니다.

    struct Person {
        let name: String
        let age: Int
        let email: String
    }
    
  3. Sourcery 템플릿 작성

    Sourcery를 사용하여 자동으로 JSON 파싱 코드를 생성하기 위해 템플릿을 작성해야 합니다. 템플릿은 Swift 코드로 작성되며, 프로젝트 내에서 .sourcery.yml 파일을 생성하여 템플릿 경로를 설정해야 합니다.

    예를 들어, 다음과 같은 템플릿 파일을 작성할 수 있습니다.

       
    // AutoGenerated.swift
    {% for var in variables %}
        {% if var.type.name == "String" %}
            let {{ var.name }} = dict["{{ var.name }}"] as? String ?? ""
        {% elseif var.type.name == "Int" %}
            let {{ var.name }} = dict["{{ var.name }}"] as? Int ?? 0
        {% endif %}
    {% endfor %}
       
    

    이 템플릿은 Person 모델 클래스를 파싱하기 위한 코드를 생성합니다. nameemailString 타입으로, ageInt 타입으로 파싱됩니다.

  4. 코드 생성

    터미널에서 다음 명령을 실행하여 코드를 생성합니다.

    $ sourcery
    

    이 명령을 실행하면 .sourcery.yml 파일을 기반으로 코드가 자동으로 생성됩니다. 이렇게 생성된 코드는 AutoGenerated.swift 파일에 작성되며, 기존의 모델 클래스에 추가되어 사용할 수 있습니다.

  5. 코드 사용

    자동으로 생성된 코드를 사용하여 JSON 데이터를 파싱할 수 있습니다. 다음과 같이 사용할 수 있습니다.

    let json = // JSON 데이터
    let dict = try? JSONSerialization.jsonObject(with: json, options: []) as? [String: Any]
    let person = AutoGenerated(dict: dict)
    

    이렇게 하면 person 객체가 생성되고, JSON 데이터가 Person 모델 클래스에 파싱됩니다.

결론

Swift Sourcery를 사용하면 스위프트 코드의 반복 작업을 자동화할 수 있습니다. 이를 사용하여 JSON 파싱 코드를 자동으로 생성하면 개발자는 보다 효율적으로 작업할 수 있습니다.