JSON은 데이터를 구조화하고 전송하기 위해 널리 사용되는 형식입니다. Swift에서는 매우 간단하게 파일을 JSON 형식으로 저장할 수 있습니다. 이번 글에서는 Swift에서 파일을 JSON 형식으로 저장하는 방법에 대해 알아보겠습니다.
1. JSONEncoder를 사용하여 파일 저장하기
Swift에서는 JSONEncoder
를 사용하여 객체를 JSON 데이터로 인코드 할 수 있습니다. JSONEncoder는 Codable
프로토콜을 준수하는 타입을 인코드하는 데 사용될 수 있습니다. 아래는 파일을 JSON 형식으로 저장하는 예제 코드입니다.
import Foundation
struct Person: Codable {
var name: String
var age: Int
}
let person = Person(name: "John Doe", age: 30)
let jsonEncoder = JSONEncoder()
let jsonData = try jsonEncoder.encode(person)
if let jsonString = String(data: jsonData, encoding: .utf8) {
// 파일로 저장
let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("person.json")
try jsonString.write(to: fileURL, atomically: true, encoding: .utf8)
print("JSON 파일이 저장되었습니다.")
} else {
print("JSON 데이터를 문자열로 변환할 수 없습니다.")
}
위의 코드에서는 Person
이라는 Codable을 준수하는 구조체를 정의하고, JSONEncoder
를 사용하여 Person
객체를 JSON 데이터로 인코드합니다. 그런 다음, JSON 데이터를 문자열로 변환하고 파일로 저장하는 과정을 거칩니다. 파일은 FileManager
를 통해 앱의 Document 디렉토리에 저장됩니다.
2. 파일에서 JSON 데이터 읽어오기
저장된 JSON 파일에서 데이터를 읽어오는 방법은 다음과 같습니다.
let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("person.json")
do {
let jsonString = try String(contentsOf: fileURL, encoding: .utf8)
let jsonData = jsonString.data(using: .utf8)
let jsonDecoder = JSONDecoder()
let person = try jsonDecoder.decode(Person.self, from: jsonData!)
print("이름: \(person.name), 나이: \(person.age)")
} catch {
print("JSON 파일을 읽어오는 데 실패했습니다. 에러: \(error)")
}
위의 코드에서는 저장된 JSON 파일을 String(contentsOf:encoding:)
메서드를 사용하여 문자열로 읽어옵니다. 그런 다음, 문자열을 다시 Data
로 변환하고 JSONDecoder
를 사용하여 Person
객체로 디코드합니다. 마지막으로 Person
객체의 속성을 출력하여 결과를 확인할 수 있습니다.
결론
Swift에서는 JSONEncoder
와 JSONDecoder
를 사용하여 파일을 JSON 형식으로 저장하고 읽어올 수 있습니다. 위의 방법을 활용하여 데이터를 효율적으로 구조화하고 전송할 수 있습니다.