반응형
Swift에서 객체를 JSON을 Dictionary로 변환하는 방법
Swift에서는 객체를 JSON 형식으로 인코딩하고, 다시 해당 JSON을 Dictionary로 변환하는 작업이 자주 필요합니다. 이를 위해 Codable
프로토콜을 사용하여 객체를 JSON으로 인코딩하고, JSONSerialization
을 사용하여 JSON을 다시 Dictionary로 디코딩하는 방법을 살펴보겠습니다.
1. Codable 프로토콜 준수
먼저, 객체를 JSON으로 인코딩하려면 해당 객체가 Codable
프로토콜을 준수해야 합니다. Codable
은 Encodable
과 Decodable
프로토콜의 별칭으로, 객체를 인코딩(직렬화)하고 디코딩(역직렬화)하는 데 사용됩니다. 아래와 같이 클래스 또는 구조체를 Codable
로 선언해봅시다.
struct Person: Codable {
var name: String
var age: Int
var email: String
// 다른 프로퍼티들도 있을 수 있습니다.
}
2. 인코딩(Encoding) - 객체를 JSON으로 변환
Swift의 JSONEncoder
를 사용하여 객체를 JSON으로 인코딩할 수 있습니다.
import Foundation
func encodeObjectToJson<T: Codable>(_ object: T) -> String? {
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted // 선택 사항: 가독성을 위해 들여쓰기가 적용된 JSON으로 만듭니다.
do {
let jsonData = try encoder.encode(object)
if let jsonString = String(data: jsonData, encoding: .utf8) {
return jsonString
}
} catch {
print("Error encoding object to JSON: \(error.localizedDescription)")
}
return nil
}
3. 디코딩(Decoding) - JSON을 Dictionary로 변환
Swift의 JSONSerialization
을 사용하여 JSON을 Foundation 데이터 구조로 변환하고, 이를 Dictionary로 캐스팅합니다.
func jsonStringToDictionary(_ jsonString: String) -> [String: Any]? {
if let jsonData = jsonString.data(using: .utf8) {
do {
if let dictionary = try JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any] {
return dictionary
}
} catch {
print("Error converting JSON string to dictionary: \(error.localizedDescription)")
}
}
return nil
}
4. 변환 작업 실행하기
이제 encodeObjectToJson
함수를 사용하여 객체를 JSON으로 인코딩한 뒤, jsonStringToDictionary
함수를 사용하여 JSON을 다시 Dictionary로 변환합니다.
let person = Person(name: "John Doe", age: 30, email: "john.doe@example.com")
// 객체를 JSON으로 인코딩하여 문자열로 반환
if let jsonString = encodeObjectToJson(person) {
console.log("JSON String:");
console.log(jsonString);
// JSON 문자열을 다시 Dictionary로 변환
if let dictionary = jsonStringToDictionary(jsonString) {
console.log("\nDictionary:");
console.log(dictionary);
}
}
결론
Swift에서 Codable
프로토콜과 JSONSerialization
을 조합하여 객체를 JSON으로 인코딩하고, 다시 JSON을 Dictionary로 변환하는 방법을 알아보았습니다. 이를 통해 Swift 언어를 활용하여 JSON 데이터를 더 쉽게 다룰 수 있습니다. 감사합니다!
반응형
'개발 > Swift' 카테고리의 다른 글
SwiftUI 바코드 인식 (0) | 2023.07.29 |
---|---|
Swift에서 CADisplayLink를 사용하는 방법 (0) | 2023.07.24 |
Swift 에서 랜덤값 추출하기: Swift 난수 추출 (0) | 2023.07.22 |
SwiftUI와 UIKit 비교: 새로운 UI 개발 패러다임의 장점과 단점 (0) | 2023.07.21 |
SwiftUI와 MVVM 아키텍처를 활용한 앱 개발 방법 (0) | 2023.07.18 |
댓글